mkdocs sites
Taylor committed
Jul 11, 2023 at 12:42 UTC
164512381e6ce5c2af2e3263ffccb23ec42b851e
7 files changed
+2024
-1950
backend/site/agents/index.html
+659
-627
@@ -1346,11 +1346,7 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
1346
1347
<details class="quote">
1348
<summary>Source code in <code>app\routes\agents.py</code></summary>
1349
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-77">77</a></span>
1350
-<span class="normal"><a href="#__codelineno-0-78">78</a></span>
1351
-<span class="normal"><a href="#__codelineno-0-79">79</a></span>
1352
-<span class="normal"><a href="#__codelineno-0-80">80</a></span>
1353
-<span class="normal"><a href="#__codelineno-0-81">81</a></span>
1349
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-81">81</a></span>
1350
<span class="normal"><a href="#__codelineno-0-82">82</a></span>
1351
<span class="normal"><a href="#__codelineno-0-83">83</a></span>
1352
<span class="normal"><a href="#__codelineno-0-84">84</a></span>
@@ -1362,23 +1358,27 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
1358
<span class="normal"><a href="#__codelineno-0-90">90</a></span>
1359
<span class="normal"><a href="#__codelineno-0-91">91</a></span>
1360
<span class="normal"><a href="#__codelineno-0-92">92</a></span>
1365
-<span class="normal"><a href="#__codelineno-0-93">93</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/agents/<agent_id>/delete"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</span><span class="p">])</span>
1366
-<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="k">def</span> <span class="nf">delete_agent</span><span class="p">(</span><span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
1367
-<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="w"> </span><span class="sd">"""</span>
1368
-<a id="__codelineno-0-80" name="__codelineno-0-80"></a><span class="sd"> Endpoint to delete an agent.</span>
1369
-<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> Args:</span>
1370
-<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="sd"> agent_id (str): The ID of the agent to be deleted.</span>
1371
-<a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="sd"> Returns:</span>
1372
-<a id="__codelineno-0-84" name="__codelineno-0-84"></a><span class="sd"> json: A JSON response indicating whether the deletion was successful.</span>
1373
-<a id="__codelineno-0-85" name="__codelineno-0-85"></a><span class="sd"> """</span>
1374
-<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
1375
-<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">delete_agent_db</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span>
1376
-<a id="__codelineno-0-88" name="__codelineno-0-88"></a>
1377
-<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="n">universal_service</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span>
1378
-<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="n">agent_service</span> <span class="o">=</span> <span class="n">WazuhManagerAgentService</span><span class="p">(</span><span class="n">universal_service</span><span class="p">)</span>
1379
-<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="n">agent_service</span><span class="o">.</span><span class="n">delete_agent</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span>
1361
+<span class="normal"><a href="#__codelineno-0-93">93</a></span>
1362
+<span class="normal"><a href="#__codelineno-0-94">94</a></span>
1363
+<span class="normal"><a href="#__codelineno-0-95">95</a></span>
1364
+<span class="normal"><a href="#__codelineno-0-96">96</a></span>
1365
+<span class="normal"><a href="#__codelineno-0-97">97</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/agents/<agent_id>/delete"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</span><span class="p">])</span>
1366
+<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="k">def</span> <span class="nf">delete_agent</span><span class="p">(</span><span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
1367
+<a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="w"> </span><span class="sd">"""</span>
1368
+<a id="__codelineno-0-84" name="__codelineno-0-84"></a><span class="sd"> Endpoint to delete an agent.</span>
1369
+<a id="__codelineno-0-85" name="__codelineno-0-85"></a><span class="sd"> Args:</span>
1370
+<a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="sd"> agent_id (str): The ID of the agent to be deleted.</span>
1371
+<a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="sd"> Returns:</span>
1372
+<a id="__codelineno-0-88" name="__codelineno-0-88"></a><span class="sd"> json: A JSON response indicating whether the deletion was successful.</span>
1373
+<a id="__codelineno-0-89" name="__codelineno-0-89"></a><span class="sd"> """</span>
1374
+<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
1375
+<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">delete_agent_db</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span>
1376
<a id="__codelineno-0-92" name="__codelineno-0-92"></a>
1381
-<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="k">return</span> <span class="n">result</span>
1377
+<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="n">universal_service</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span>
1378
+<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="n">agent_service</span> <span class="o">=</span> <span class="n">WazuhManagerAgentService</span><span class="p">(</span><span class="n">universal_service</span><span class="p">)</span>
1379
+<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="n">agent_service</span><span class="o">.</span><span class="n">delete_agent</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span>
1380
+<a id="__codelineno-0-96" name="__codelineno-0-96"></a>
1381
+<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="k">return</span> <span class="n">result</span>
1382
</code></pre></div></td></tr></table></div>
1383
</details>
1384
</div>
@@ -1451,29 +1451,29 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
1451
1452
<details class="quote">
1453
<summary>Source code in <code>app\routes\agents.py</code></summary>
1454
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-23">23</a></span>
1455
-<span class="normal"><a href="#__codelineno-0-24">24</a></span>
1456
-<span class="normal"><a href="#__codelineno-0-25">25</a></span>
1457
-<span class="normal"><a href="#__codelineno-0-26">26</a></span>
1458
-<span class="normal"><a href="#__codelineno-0-27">27</a></span>
1454
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-27">27</a></span>
1455
<span class="normal"><a href="#__codelineno-0-28">28</a></span>
1456
<span class="normal"><a href="#__codelineno-0-29">29</a></span>
1457
<span class="normal"><a href="#__codelineno-0-30">30</a></span>
1458
<span class="normal"><a href="#__codelineno-0-31">31</a></span>
1459
<span class="normal"><a href="#__codelineno-0-32">32</a></span>
1460
<span class="normal"><a href="#__codelineno-0-33">33</a></span>
1465
-<span class="normal"><a href="#__codelineno-0-34">34</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/agents/<agent_id>"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1466
-<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="k">def</span> <span class="nf">get_agent</span><span class="p">(</span><span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
1467
-<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="w"> </span><span class="sd">"""</span>
1468
-<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="sd"> Endpoint to get the details of a specific agent.</span>
1469
-<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> Args:</span>
1470
-<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> agent_id (str): The ID of the agent to retrieve.</span>
1471
-<a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="sd"> Returns:</span>
1472
-<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> json: A JSON response containing the details of the agent.</span>
1473
-<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> """</span>
1474
-<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
1475
-<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">get_agent</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span>
1476
-<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="k">return</span> <span class="n">agent</span>
1461
+<span class="normal"><a href="#__codelineno-0-34">34</a></span>
1462
+<span class="normal"><a href="#__codelineno-0-35">35</a></span>
1463
+<span class="normal"><a href="#__codelineno-0-36">36</a></span>
1464
+<span class="normal"><a href="#__codelineno-0-37">37</a></span>
1465
+<span class="normal"><a href="#__codelineno-0-38">38</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/agents/<agent_id>"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1466
+<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="k">def</span> <span class="nf">get_agent</span><span class="p">(</span><span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
1467
+<a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="w"> </span><span class="sd">"""</span>
1468
+<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> Endpoint to get the details of a specific agent.</span>
1469
+<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> Args:</span>
1470
+<a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="sd"> agent_id (str): The ID of the agent to retrieve.</span>
1471
+<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="sd"> Returns:</span>
1472
+<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> json: A JSON response containing the details of the agent.</span>
1473
+<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> """</span>
1474
+<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
1475
+<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">get_agent</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span>
1476
+<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="k">return</span> <span class="n">agent</span>
1477
</code></pre></div></td></tr></table></div>
1478
</details>
1479
</div>
@@ -1546,11 +1546,7 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
1546
1547
<details class="quote">
1548
<summary>Source code in <code>app\routes\agents.py</code></summary>
1549
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-96"> 96</a></span>
1550
-<span class="normal"><a href="#__codelineno-0-97"> 97</a></span>
1551
-<span class="normal"><a href="#__codelineno-0-98"> 98</a></span>
1552
-<span class="normal"><a href="#__codelineno-0-99"> 99</a></span>
1553
-<span class="normal"><a href="#__codelineno-0-100">100</a></span>
1549
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-100">100</a></span>
1550
<span class="normal"><a href="#__codelineno-0-101">101</a></span>
1551
<span class="normal"><a href="#__codelineno-0-102">102</a></span>
1552
<span class="normal"><a href="#__codelineno-0-103">103</a></span>
@@ -1559,20 +1555,28 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
1555
<span class="normal"><a href="#__codelineno-0-106">106</a></span>
1556
<span class="normal"><a href="#__codelineno-0-107">107</a></span>
1557
<span class="normal"><a href="#__codelineno-0-108">108</a></span>
1562
-<span class="normal"><a href="#__codelineno-0-109">109</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-96" name="__codelineno-0-96"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/agents/<agent_id>/vulnerabilities"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1563
-<a id="__codelineno-0-97" name="__codelineno-0-97"></a><span class="k">def</span> <span class="nf">get_agent_vulnerabilities</span><span class="p">(</span><span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
1564
-<a id="__codelineno-0-98" name="__codelineno-0-98"></a><span class="w"> </span><span class="sd">"""</span>
1565
-<a id="__codelineno-0-99" name="__codelineno-0-99"></a><span class="sd"> Endpoint to get the vulnerabilities of a specific agent.</span>
1566
-<a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="sd"> Args:</span>
1567
-<a id="__codelineno-0-101" name="__codelineno-0-101"></a><span class="sd"> agent_id (str): The ID of the agent whose vulnerabilities are to be fetched.</span>
1568
-<a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="sd"> Returns:</span>
1569
-<a id="__codelineno-0-103" name="__codelineno-0-103"></a><span class="sd"> json: A JSON response containing the vulnerabilities of the agent.</span>
1570
-<a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="sd"> """</span>
1571
-<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="n">universal_service</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span>
1572
-<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="n">vulnerability_service</span> <span class="o">=</span> <span class="n">VulnerabilityService</span><span class="p">(</span><span class="n">universal_service</span><span class="p">)</span>
1573
-<a id="__codelineno-0-107" name="__codelineno-0-107"></a>
1574
-<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="n">agent_vulnerabilities</span> <span class="o">=</span> <span class="n">vulnerability_service</span><span class="o">.</span><span class="n">agent_vulnerabilities</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span>
1575
-<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="k">return</span> <span class="n">agent_vulnerabilities</span>
1558
+<span class="normal"><a href="#__codelineno-0-109">109</a></span>
1559
+<span class="normal"><a href="#__codelineno-0-110">110</a></span>
1560
+<span class="normal"><a href="#__codelineno-0-111">111</a></span>
1561
+<span class="normal"><a href="#__codelineno-0-112">112</a></span>
1562
+<span class="normal"><a href="#__codelineno-0-113">113</a></span>
1563
+<span class="normal"><a href="#__codelineno-0-114">114</a></span>
1564
+<span class="normal"><a href="#__codelineno-0-115">115</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/agents/<agent_id>/vulnerabilities"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1565
+<a id="__codelineno-0-101" name="__codelineno-0-101"></a><span class="k">def</span> <span class="nf">get_agent_vulnerabilities</span><span class="p">(</span><span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
1566
+<a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="w"> </span><span class="sd">"""</span>
1567
+<a id="__codelineno-0-103" name="__codelineno-0-103"></a><span class="sd"> Endpoint to get the vulnerabilities of a specific agent.</span>
1568
+<a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="sd"> Args:</span>
1569
+<a id="__codelineno-0-105" name="__codelineno-0-105"></a><span class="sd"> agent_id (str): The ID of the agent whose vulnerabilities are to be fetched.</span>
1570
+<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> Returns:</span>
1571
+<a id="__codelineno-0-107" name="__codelineno-0-107"></a><span class="sd"> json: A JSON response containing the vulnerabilities of the agent.</span>
1572
+<a id="__codelineno-0-108" name="__codelineno-0-108"></a><span class="sd"> """</span>
1573
+<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="n">universal_service</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span>
1574
+<a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="n">vulnerability_service</span> <span class="o">=</span> <span class="n">VulnerabilityService</span><span class="p">(</span><span class="n">universal_service</span><span class="p">)</span>
1575
+<a id="__codelineno-0-111" name="__codelineno-0-111"></a>
1576
+<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="n">agent_vulnerabilities</span> <span class="o">=</span> <span class="n">vulnerability_service</span><span class="o">.</span><span class="n">agent_vulnerabilities</span><span class="p">(</span>
1577
+<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">,</span>
1578
+<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="p">)</span>
1579
+<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="k">return</span> <span class="n">agent_vulnerabilities</span>
1580
</code></pre></div></td></tr></table></div>
1581
</details>
1582
</div>
@@ -1617,25 +1621,25 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
1621
1622
<details class="quote">
1623
<summary>Source code in <code>app\routes\agents.py</code></summary>
1620
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-11">11</a></span>
1621
-<span class="normal"><a href="#__codelineno-0-12">12</a></span>
1622
-<span class="normal"><a href="#__codelineno-0-13">13</a></span>
1623
-<span class="normal"><a href="#__codelineno-0-14">14</a></span>
1624
-<span class="normal"><a href="#__codelineno-0-15">15</a></span>
1624
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-15">15</a></span>
1625
<span class="normal"><a href="#__codelineno-0-16">16</a></span>
1626
<span class="normal"><a href="#__codelineno-0-17">17</a></span>
1627
<span class="normal"><a href="#__codelineno-0-18">18</a></span>
1628
<span class="normal"><a href="#__codelineno-0-19">19</a></span>
1629
-<span class="normal"><a href="#__codelineno-0-20">20</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/agents"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1630
-<a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="k">def</span> <span class="nf">get_agents</span><span class="p">()</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
1631
-<a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="w"> </span><span class="sd">"""</span>
1632
-<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="sd"> Endpoint to get a list of all agents. It processes each agent and returns the results.</span>
1633
-<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> Returns:</span>
1634
-<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> json: A JSON response containing the list of all available agents along with their connection verification status.</span>
1635
-<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> """</span>
1636
-<a id="__codelineno-0-18" name="__codelineno-0-18"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
1637
-<a id="__codelineno-0-19" name="__codelineno-0-19"></a> <span class="n">agents</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">get_all_agents</span><span class="p">()</span>
1638
-<a id="__codelineno-0-20" name="__codelineno-0-20"></a> <span class="k">return</span> <span class="n">agents</span>
1629
+<span class="normal"><a href="#__codelineno-0-20">20</a></span>
1630
+<span class="normal"><a href="#__codelineno-0-21">21</a></span>
1631
+<span class="normal"><a href="#__codelineno-0-22">22</a></span>
1632
+<span class="normal"><a href="#__codelineno-0-23">23</a></span>
1633
+<span class="normal"><a href="#__codelineno-0-24">24</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/agents"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1634
+<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="k">def</span> <span class="nf">get_agents</span><span class="p">()</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
1635
+<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="w"> </span><span class="sd">"""</span>
1636
+<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> Endpoint to get a list of all agents. It processes each agent and returns the results.</span>
1637
+<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> Returns:</span>
1638
+<a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> json: A JSON response containing the list of all available agents along with their connection verification status.</span>
1639
+<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> """</span>
1640
+<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
1641
+<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="n">agents</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">get_all_agents</span><span class="p">()</span>
1642
+<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="k">return</span> <span class="n">agents</span>
1643
</code></pre></div></td></tr></table></div>
1644
</details>
1645
</div>
@@ -1708,29 +1712,29 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
1712
1713
<details class="quote">
1714
<summary>Source code in <code>app\routes\agents.py</code></summary>
1711
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-37">37</a></span>
1712
-<span class="normal"><a href="#__codelineno-0-38">38</a></span>
1713
-<span class="normal"><a href="#__codelineno-0-39">39</a></span>
1714
-<span class="normal"><a href="#__codelineno-0-40">40</a></span>
1715
-<span class="normal"><a href="#__codelineno-0-41">41</a></span>
1715
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-41">41</a></span>
1716
<span class="normal"><a href="#__codelineno-0-42">42</a></span>
1717
<span class="normal"><a href="#__codelineno-0-43">43</a></span>
1718
<span class="normal"><a href="#__codelineno-0-44">44</a></span>
1719
<span class="normal"><a href="#__codelineno-0-45">45</a></span>
1720
<span class="normal"><a href="#__codelineno-0-46">46</a></span>
1721
<span class="normal"><a href="#__codelineno-0-47">47</a></span>
1722
-<span class="normal"><a href="#__codelineno-0-48">48</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/agents/<agent_id>/critical"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</span><span class="p">])</span>
1723
-<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="k">def</span> <span class="nf">mark_as_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
1724
-<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="w"> </span><span class="sd">"""</span>
1725
-<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="sd"> Endpoint to mark an agent as critical.</span>
1726
-<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> Args:</span>
1727
-<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> agent_id (str): The ID of the agent to mark as critical.</span>
1728
-<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> Returns:</span>
1729
-<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> json: A JSON response containing the updated agent information after being marked as critical.</span>
1730
-<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> """</span>
1731
-<a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
1732
-<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">mark_agent_as_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span>
1733
-<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="k">return</span> <span class="n">result</span>
1722
+<span class="normal"><a href="#__codelineno-0-48">48</a></span>
1723
+<span class="normal"><a href="#__codelineno-0-49">49</a></span>
1724
+<span class="normal"><a href="#__codelineno-0-50">50</a></span>
1725
+<span class="normal"><a href="#__codelineno-0-51">51</a></span>
1726
+<span class="normal"><a href="#__codelineno-0-52">52</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/agents/<agent_id>/critical"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</span><span class="p">])</span>
1727
+<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="k">def</span> <span class="nf">mark_as_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
1728
+<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="w"> </span><span class="sd">"""</span>
1729
+<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> Endpoint to mark an agent as critical.</span>
1730
+<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> Args:</span>
1731
+<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> agent_id (str): The ID of the agent to mark as critical.</span>
1732
+<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> Returns:</span>
1733
+<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="sd"> json: A JSON response containing the updated agent information after being marked as critical.</span>
1734
+<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="sd"> """</span>
1735
+<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
1736
+<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">mark_agent_as_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span>
1737
+<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">return</span> <span class="n">result</span>
1738
</code></pre></div></td></tr></table></div>
1739
</details>
1740
</div>
@@ -1775,25 +1779,25 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
1779
1780
<details class="quote">
1781
<summary>Source code in <code>app\routes\agents.py</code></summary>
1778
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-65">65</a></span>
1779
-<span class="normal"><a href="#__codelineno-0-66">66</a></span>
1780
-<span class="normal"><a href="#__codelineno-0-67">67</a></span>
1781
-<span class="normal"><a href="#__codelineno-0-68">68</a></span>
1782
-<span class="normal"><a href="#__codelineno-0-69">69</a></span>
1782
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-69">69</a></span>
1783
<span class="normal"><a href="#__codelineno-0-70">70</a></span>
1784
<span class="normal"><a href="#__codelineno-0-71">71</a></span>
1785
<span class="normal"><a href="#__codelineno-0-72">72</a></span>
1786
<span class="normal"><a href="#__codelineno-0-73">73</a></span>
1787
-<span class="normal"><a href="#__codelineno-0-74">74</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/agents/sync"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</span><span class="p">])</span>
1788
-<a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="k">def</span> <span class="nf">sync_agents</span><span class="p">()</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
1789
-<a id="__codelineno-0-67" name="__codelineno-0-67"></a><span class="w"> </span><span class="sd">"""</span>
1790
-<a id="__codelineno-0-68" name="__codelineno-0-68"></a><span class="sd"> Endpoint to synchronize all agents.</span>
1791
-<a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="sd"> Returns:</span>
1792
-<a id="__codelineno-0-70" name="__codelineno-0-70"></a><span class="sd"> json: A JSON response containing the updated information of all synchronized agents.</span>
1793
-<a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="sd"> """</span>
1794
-<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentSyncService</span><span class="p">()</span>
1795
-<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">sync_agents</span><span class="p">()</span>
1796
-<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
1787
+<span class="normal"><a href="#__codelineno-0-74">74</a></span>
1788
+<span class="normal"><a href="#__codelineno-0-75">75</a></span>
1789
+<span class="normal"><a href="#__codelineno-0-76">76</a></span>
1790
+<span class="normal"><a href="#__codelineno-0-77">77</a></span>
1791
+<span class="normal"><a href="#__codelineno-0-78">78</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/agents/sync"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</span><span class="p">])</span>
1792
+<a id="__codelineno-0-70" name="__codelineno-0-70"></a><span class="k">def</span> <span class="nf">sync_agents</span><span class="p">()</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
1793
+<a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="w"> </span><span class="sd">"""</span>
1794
+<a id="__codelineno-0-72" name="__codelineno-0-72"></a><span class="sd"> Endpoint to synchronize all agents.</span>
1795
+<a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="sd"> Returns:</span>
1796
+<a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="sd"> json: A JSON response containing the updated information of all synchronized agents.</span>
1797
+<a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="sd"> """</span>
1798
+<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentSyncService</span><span class="p">()</span>
1799
+<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">sync_agents</span><span class="p">()</span>
1800
+<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
1801
</code></pre></div></td></tr></table></div>
1802
</details>
1803
</div>
@@ -1866,29 +1870,29 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
1870
1871
<details class="quote">
1872
<summary>Source code in <code>app\routes\agents.py</code></summary>
1869
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-51">51</a></span>
1870
-<span class="normal"><a href="#__codelineno-0-52">52</a></span>
1871
-<span class="normal"><a href="#__codelineno-0-53">53</a></span>
1872
-<span class="normal"><a href="#__codelineno-0-54">54</a></span>
1873
-<span class="normal"><a href="#__codelineno-0-55">55</a></span>
1873
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-55">55</a></span>
1874
<span class="normal"><a href="#__codelineno-0-56">56</a></span>
1875
<span class="normal"><a href="#__codelineno-0-57">57</a></span>
1876
<span class="normal"><a href="#__codelineno-0-58">58</a></span>
1877
<span class="normal"><a href="#__codelineno-0-59">59</a></span>
1878
<span class="normal"><a href="#__codelineno-0-60">60</a></span>
1879
<span class="normal"><a href="#__codelineno-0-61">61</a></span>
1880
-<span class="normal"><a href="#__codelineno-0-62">62</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/agents/<agent_id>/noncritical"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</span><span class="p">])</span>
1881
-<a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="k">def</span> <span class="nf">unmark_agent_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
1882
-<a id="__codelineno-0-53" name="__codelineno-0-53"></a><span class="w"> </span><span class="sd">"""</span>
1883
-<a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="sd"> Endpoint to unmark an agent as critical.</span>
1884
-<a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="sd"> Args:</span>
1885
-<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> agent_id (str): The ID of the agent to unmark as critical.</span>
1886
-<a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="sd"> Returns:</span>
1887
-<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> json: A JSON response containing the updated agent information after being unmarked as critical.</span>
1888
-<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="sd"> """</span>
1889
-<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
1890
-<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">mark_agent_as_non_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span>
1891
-<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="k">return</span> <span class="n">result</span>
1880
+<span class="normal"><a href="#__codelineno-0-62">62</a></span>
1881
+<span class="normal"><a href="#__codelineno-0-63">63</a></span>
1882
+<span class="normal"><a href="#__codelineno-0-64">64</a></span>
1883
+<span class="normal"><a href="#__codelineno-0-65">65</a></span>
1884
+<span class="normal"><a href="#__codelineno-0-66">66</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/agents/<agent_id>/noncritical"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</span><span class="p">])</span>
1885
+<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="k">def</span> <span class="nf">unmark_agent_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
1886
+<a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="w"> </span><span class="sd">"""</span>
1887
+<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> Endpoint to unmark an agent as critical.</span>
1888
+<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="sd"> Args:</span>
1889
+<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="sd"> agent_id (str): The ID of the agent to unmark as critical.</span>
1890
+<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> Returns:</span>
1891
+<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> json: A JSON response containing the updated agent information after being unmarked as critical.</span>
1892
+<a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> """</span>
1893
+<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
1894
+<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">mark_agent_as_non_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span>
1895
+<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">return</span> <span class="n">result</span>
1896
</code></pre></div></td></tr></table></div>
1897
</details>
1898
</div>
@@ -1941,11 +1945,7 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
1945
1946
<details class="quote">
1947
<summary>Source code in <code>app\services\agents\agents.py</code></summary>
1944
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-17"> 17</a></span>
1945
-<span class="normal"><a href="#__codelineno-0-18"> 18</a></span>
1946
-<span class="normal"><a href="#__codelineno-0-19"> 19</a></span>
1947
-<span class="normal"><a href="#__codelineno-0-20"> 20</a></span>
1948
-<span class="normal"><a href="#__codelineno-0-21"> 21</a></span>
1948
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-21"> 21</a></span>
1949
<span class="normal"><a href="#__codelineno-0-22"> 22</a></span>
1950
<span class="normal"><a href="#__codelineno-0-23"> 23</a></span>
1951
<span class="normal"><a href="#__codelineno-0-24"> 24</a></span>
@@ -2087,153 +2087,157 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
2087
<span class="normal"><a href="#__codelineno-0-160">160</a></span>
2088
<span class="normal"><a href="#__codelineno-0-161">161</a></span>
2089
<span class="normal"><a href="#__codelineno-0-162">162</a></span>
2090
-<span class="normal"><a href="#__codelineno-0-163">163</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="k">class</span> <span class="nc">AgentService</span><span class="p">:</span>
2091
-<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="w"> </span><span class="sd">"""</span>
2092
-<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> A service class that encapsulates the logic for managing agents.</span>
2093
-<a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> """</span>
2094
-<a id="__codelineno-0-21" name="__codelineno-0-21"></a>
2095
-<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="k">def</span> <span class="nf">get_all_agents</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]]:</span>
2096
-<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="w"> </span><span class="sd">"""</span>
2097
-<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> Retrieves all agents from the database.</span>
2090
+<span class="normal"><a href="#__codelineno-0-163">163</a></span>
2091
+<span class="normal"><a href="#__codelineno-0-164">164</a></span>
2092
+<span class="normal"><a href="#__codelineno-0-165">165</a></span>
2093
+<span class="normal"><a href="#__codelineno-0-166">166</a></span>
2094
+<span class="normal"><a href="#__codelineno-0-167">167</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="k">class</span> <span class="nc">AgentService</span><span class="p">:</span>
2095
+<a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="w"> </span><span class="sd">"""</span>
2096
+<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="sd"> A service class that encapsulates the logic for managing agents.</span>
2097
+<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> """</span>
2098
<a id="__codelineno-0-25" name="__codelineno-0-25"></a>
2099
-<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="sd"> Returns:</span>
2100
-<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> List[dict]: A list of dictionaries where each dictionary represents the serialized data of an agent.</span>
2101
-<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> """</span>
2102
-<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="n">agents</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
2103
-<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="k">return</span> <span class="n">agent_metadatas_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agents</span><span class="p">)</span>
2104
-<a id="__codelineno-0-31" name="__codelineno-0-31"></a>
2105
-<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="k">def</span> <span class="nf">get_agent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2106
-<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="w"> </span><span class="sd">"""</span>
2107
-<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> Retrieves a specific agent from the database using its ID.</span>
2099
+<a id="__codelineno-0-26" name="__codelineno-0-26"></a> <span class="k">def</span> <span class="nf">get_all_agents</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]]:</span>
2100
+<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="w"> </span><span class="sd">"""</span>
2101
+<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> Retrieves all agents from the database.</span>
2102
+<a id="__codelineno-0-29" name="__codelineno-0-29"></a>
2103
+<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> Returns:</span>
2104
+<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> List[dict]: A list of dictionaries where each dictionary represents the serialized data of an agent.</span>
2105
+<a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="sd"> """</span>
2106
+<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="n">agents</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
2107
+<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="k">return</span> <span class="n">agent_metadatas_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agents</span><span class="p">)</span>
2108
<a id="__codelineno-0-35" name="__codelineno-0-35"></a>
2109
-<a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="sd"> Args:</span>
2110
-<a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="sd"> agent_id (str): The ID of the agent to retrieve.</span>
2111
-<a id="__codelineno-0-38" name="__codelineno-0-38"></a>
2112
-<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> Returns:</span>
2113
-<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="sd"> dict: A dictionary representing the serialized data of the agent if found, otherwise a message indicating</span>
2114
-<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> that the agent was not found.</span>
2115
-<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> """</span>
2116
-<a id="__codelineno-0-43" name="__codelineno-0-43"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2117
-<a id="__codelineno-0-44" name="__codelineno-0-44"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2118
-<a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">}</span>
2119
-<a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="k">return</span> <span class="n">agent_metadata_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2120
-<a id="__codelineno-0-47" name="__codelineno-0-47"></a>
2121
-<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="k">def</span> <span class="nf">mark_agent_as_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2122
-<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="w"> </span><span class="sd">"""</span>
2123
-<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="sd"> Marks a specific agent as critical.</span>
2109
+<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="k">def</span> <span class="nf">get_agent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2110
+<a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="w"> </span><span class="sd">"""</span>
2111
+<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="sd"> Retrieves a specific agent from the database using its ID.</span>
2112
+<a id="__codelineno-0-39" name="__codelineno-0-39"></a>
2113
+<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="sd"> Args:</span>
2114
+<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> agent_id (str): The ID of the agent to retrieve.</span>
2115
+<a id="__codelineno-0-42" name="__codelineno-0-42"></a>
2116
+<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> Returns:</span>
2117
+<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> dict: A dictionary representing the serialized data of the agent if found, otherwise a message indicating</span>
2118
+<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> that the agent was not found.</span>
2119
+<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> """</span>
2120
+<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2121
+<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2122
+<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">}</span>
2123
+<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">return</span> <span class="n">agent_metadata_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2124
<a id="__codelineno-0-51" name="__codelineno-0-51"></a>
2125
-<a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="sd"> Args:</span>
2126
-<a id="__codelineno-0-53" name="__codelineno-0-53"></a><span class="sd"> agent_id (str): The ID of the agent to mark as critical.</span>
2127
-<a id="__codelineno-0-54" name="__codelineno-0-54"></a>
2128
-<a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="sd"> Returns:</span>
2129
-<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> dict: A dictionary representing a success message if the operation was successful, otherwise an error</span>
2130
-<a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="sd"> message.</span>
2131
-<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> """</span>
2132
-<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2133
-<a id="__codelineno-0-60" name="__codelineno-0-60"></a>
2134
-<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2135
-<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2136
-<a id="__codelineno-0-63" name="__codelineno-0-63"></a>
2137
-<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="n">agent</span><span class="o">.</span><span class="n">mark_as_critical</span><span class="p">()</span>
2138
-<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="n">agent_details</span> <span class="o">=</span> <span class="n">agent_metadata_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2139
-<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">if</span> <span class="n">agent_details</span><span class="p">[</span><span class="s2">"critical_asset"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
2140
-<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="k">return</span> <span class="p">{</span>
2141
-<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> failed to mark agent as critical"</span><span class="p">,</span>
2142
-<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2143
-<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="p">}</span>
2144
-<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> marked as critical"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
2145
-<a id="__codelineno-0-72" name="__codelineno-0-72"></a>
2146
-<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="k">def</span> <span class="nf">mark_agent_as_non_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2147
-<a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="w"> </span><span class="sd">"""</span>
2148
-<a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="sd"> Marks a specific agent as non-critical.</span>
2125
+<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">def</span> <span class="nf">mark_agent_as_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2126
+<a id="__codelineno-0-53" name="__codelineno-0-53"></a><span class="w"> </span><span class="sd">"""</span>
2127
+<a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="sd"> Marks a specific agent as critical.</span>
2128
+<a id="__codelineno-0-55" name="__codelineno-0-55"></a>
2129
+<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> Args:</span>
2130
+<a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="sd"> agent_id (str): The ID of the agent to mark as critical.</span>
2131
+<a id="__codelineno-0-58" name="__codelineno-0-58"></a>
2132
+<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="sd"> Returns:</span>
2133
+<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="sd"> dict: A dictionary representing a success message if the operation was successful, otherwise an error</span>
2134
+<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> message.</span>
2135
+<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> """</span>
2136
+<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2137
+<a id="__codelineno-0-64" name="__codelineno-0-64"></a>
2138
+<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2139
+<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2140
+<a id="__codelineno-0-67" name="__codelineno-0-67"></a>
2141
+<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="n">agent</span><span class="o">.</span><span class="n">mark_as_critical</span><span class="p">()</span>
2142
+<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="n">agent_details</span> <span class="o">=</span> <span class="n">agent_metadata_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2143
+<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="k">if</span> <span class="n">agent_details</span><span class="p">[</span><span class="s2">"critical_asset"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
2144
+<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="k">return</span> <span class="p">{</span>
2145
+<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> failed to mark agent as critical"</span><span class="p">,</span>
2146
+<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2147
+<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="p">}</span>
2148
+<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> marked as critical"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
2149
<a id="__codelineno-0-76" name="__codelineno-0-76"></a>
2150
-<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> Args:</span>
2151
-<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="sd"> agent_id (str): The ID of the agent to mark as non-critical.</span>
2152
-<a id="__codelineno-0-79" name="__codelineno-0-79"></a>
2153
-<a id="__codelineno-0-80" name="__codelineno-0-80"></a><span class="sd"> Returns:</span>
2154
-<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> dict: A dictionary representing a success message if the operation was successful, otherwise an error</span>
2155
-<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="sd"> message.</span>
2156
-<a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="sd"> """</span>
2157
-<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2158
-<a id="__codelineno-0-85" name="__codelineno-0-85"></a>
2159
-<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2160
-<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2161
-<a id="__codelineno-0-88" name="__codelineno-0-88"></a>
2162
-<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="n">agent</span><span class="o">.</span><span class="n">mark_as_non_critical</span><span class="p">()</span>
2163
-<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="n">agent_details</span> <span class="o">=</span> <span class="n">agent_metadata_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2164
-<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="k">if</span> <span class="n">agent_details</span><span class="p">[</span><span class="s2">"critical_asset"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
2165
-<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="k">return</span> <span class="p">{</span>
2166
-<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> failed to mark agent as non-critical"</span><span class="p">,</span>
2167
-<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2168
-<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="p">}</span>
2169
-<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> marked as non-critical"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
2170
-<a id="__codelineno-0-97" name="__codelineno-0-97"></a>
2171
-<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="k">def</span> <span class="nf">create_agent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">AgentMetadata</span><span class="p">]:</span>
2172
-<a id="__codelineno-0-99" name="__codelineno-0-99"></a><span class="w"> </span><span class="sd">"""</span>
2173
-<a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="sd"> Creates a new agent in the database.</span>
2150
+<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="k">def</span> <span class="nf">mark_agent_as_non_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2151
+<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="w"> </span><span class="sd">"""</span>
2152
+<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> Marks a specific agent as non-critical.</span>
2153
+<a id="__codelineno-0-80" name="__codelineno-0-80"></a>
2154
+<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> Args:</span>
2155
+<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="sd"> agent_id (str): The ID of the agent to mark as non-critical.</span>
2156
+<a id="__codelineno-0-83" name="__codelineno-0-83"></a>
2157
+<a id="__codelineno-0-84" name="__codelineno-0-84"></a><span class="sd"> Returns:</span>
2158
+<a id="__codelineno-0-85" name="__codelineno-0-85"></a><span class="sd"> dict: A dictionary representing a success message if the operation was successful, otherwise an error</span>
2159
+<a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="sd"> message.</span>
2160
+<a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="sd"> """</span>
2161
+<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2162
+<a id="__codelineno-0-89" name="__codelineno-0-89"></a>
2163
+<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2164
+<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2165
+<a id="__codelineno-0-92" name="__codelineno-0-92"></a>
2166
+<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="n">agent</span><span class="o">.</span><span class="n">mark_as_non_critical</span><span class="p">()</span>
2167
+<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="n">agent_details</span> <span class="o">=</span> <span class="n">agent_metadata_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2168
+<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="k">if</span> <span class="n">agent_details</span><span class="p">[</span><span class="s2">"critical_asset"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
2169
+<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="k">return</span> <span class="p">{</span>
2170
+<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> failed to mark agent as non-critical"</span><span class="p">,</span>
2171
+<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2172
+<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="p">}</span>
2173
+<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> marked as non-critical"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
2174
<a id="__codelineno-0-101" name="__codelineno-0-101"></a>
2175
-<a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="sd"> Args:</span>
2176
-<a id="__codelineno-0-103" name="__codelineno-0-103"></a><span class="sd"> agent (dict): A dictionary containing the information of an agent.</span>
2177
-<a id="__codelineno-0-104" name="__codelineno-0-104"></a>
2178
-<a id="__codelineno-0-105" name="__codelineno-0-105"></a><span class="sd"> Returns:</span>
2179
-<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> The agent object if the agent was successfully created, None otherwise.</span>
2180
-<a id="__codelineno-0-107" name="__codelineno-0-107"></a><span class="sd"> """</span>
2181
-<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="k">try</span><span class="p">:</span>
2182
-<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="n">agent_last_seen</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span>
2183
-<a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="n">agent</span><span class="p">[</span><span class="s2">"agent_last_seen"</span><span class="p">],</span>
2184
-<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">T%H:%M:%S+00:00"</span><span class="p">,</span>
2185
-<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="p">)</span> <span class="c1"># Convert to datetime</span>
2186
-<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
2187
-<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
2188
-<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="sa">f</span><span class="s2">"Invalid format for agent_last_seen: </span><span class="si">{</span><span class="n">agent</span><span class="p">[</span><span class="s1">'agent_last_seen'</span><span class="p">]</span><span class="si">}</span><span class="s2">. Fixing..."</span><span class="p">,</span>
2189
-<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="p">)</span>
2190
-<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="n">agent_last_seen</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span>
2191
-<a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="s2">"1970-01-01T00:00:00+00:00"</span><span class="p">,</span>
2192
-<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">T%H:%M:%S+00:00"</span><span class="p">,</span>
2193
-<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="p">)</span> <span class="c1"># Use the epoch time as default</span>
2194
-<a id="__codelineno-0-121" name="__codelineno-0-121"></a>
2195
-<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="n">agent_metadata</span> <span class="o">=</span> <span class="n">AgentMetadata</span><span class="p">(</span>
2196
-<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="n">agent_id</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_id"</span><span class="p">],</span>
2197
-<a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="n">hostname</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_name"</span><span class="p">],</span>
2198
-<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="n">ip_address</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_ip"</span><span class="p">],</span>
2199
-<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="n">os</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_os"</span><span class="p">],</span>
2200
-<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="n">last_seen</span><span class="o">=</span><span class="n">agent_last_seen</span><span class="p">,</span> <span class="c1"># Use the datetime object</span>
2201
-<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="n">critical_asset</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
2202
-<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="p">)</span>
2203
-<a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Agent metadata: </span><span class="si">{</span><span class="n">agent_metadata</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2204
-<a id="__codelineno-0-131" name="__codelineno-0-131"></a>
2205
-<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="k">try</span><span class="p">:</span>
2206
-<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">agent_metadata</span><span class="p">)</span>
2207
-<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
2208
-<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="k">return</span> <span class="n">agent_metadata</span>
2209
-<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2210
-<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to create agent: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2211
-<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="k">return</span> <span class="kc">None</span>
2212
-<a id="__codelineno-0-139" name="__codelineno-0-139"></a>
2213
-<a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="k">def</span> <span class="nf">delete_agent_db</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2214
-<a id="__codelineno-0-141" name="__codelineno-0-141"></a><span class="w"> </span><span class="sd">"""</span>
2215
-<a id="__codelineno-0-142" name="__codelineno-0-142"></a><span class="sd"> Deletes a specific agent from the database using its ID.</span>
2175
+<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="k">def</span> <span class="nf">create_agent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">AgentMetadata</span><span class="p">]:</span>
2176
+<a id="__codelineno-0-103" name="__codelineno-0-103"></a><span class="w"> </span><span class="sd">"""</span>
2177
+<a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="sd"> Creates a new agent in the database.</span>
2178
+<a id="__codelineno-0-105" name="__codelineno-0-105"></a>
2179
+<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> Args:</span>
2180
+<a id="__codelineno-0-107" name="__codelineno-0-107"></a><span class="sd"> agent (dict): A dictionary containing the information of an agent.</span>
2181
+<a id="__codelineno-0-108" name="__codelineno-0-108"></a>
2182
+<a id="__codelineno-0-109" name="__codelineno-0-109"></a><span class="sd"> Returns:</span>
2183
+<a id="__codelineno-0-110" name="__codelineno-0-110"></a><span class="sd"> The agent object if the agent was successfully created, None otherwise.</span>
2184
+<a id="__codelineno-0-111" name="__codelineno-0-111"></a><span class="sd"> """</span>
2185
+<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="k">try</span><span class="p">:</span>
2186
+<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="n">agent_last_seen</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span>
2187
+<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="n">agent</span><span class="p">[</span><span class="s2">"agent_last_seen"</span><span class="p">],</span>
2188
+<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">T%H:%M:%S+00:00"</span><span class="p">,</span>
2189
+<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="p">)</span> <span class="c1"># Convert to datetime</span>
2190
+<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
2191
+<a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
2192
+<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="sa">f</span><span class="s2">"Invalid format for agent_last_seen: </span><span class="si">{</span><span class="n">agent</span><span class="p">[</span><span class="s1">'agent_last_seen'</span><span class="p">]</span><span class="si">}</span><span class="s2">. Fixing..."</span><span class="p">,</span>
2193
+<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="p">)</span>
2194
+<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="n">agent_last_seen</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span>
2195
+<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="s2">"1970-01-01T00:00:00+00:00"</span><span class="p">,</span>
2196
+<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">T%H:%M:%S+00:00"</span><span class="p">,</span>
2197
+<a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="p">)</span> <span class="c1"># Use the epoch time as default</span>
2198
+<a id="__codelineno-0-125" name="__codelineno-0-125"></a>
2199
+<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="n">agent_metadata</span> <span class="o">=</span> <span class="n">AgentMetadata</span><span class="p">(</span>
2200
+<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="n">agent_id</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_id"</span><span class="p">],</span>
2201
+<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="n">hostname</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_name"</span><span class="p">],</span>
2202
+<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="n">ip_address</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_ip"</span><span class="p">],</span>
2203
+<a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="n">os</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_os"</span><span class="p">],</span>
2204
+<a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="n">last_seen</span><span class="o">=</span><span class="n">agent_last_seen</span><span class="p">,</span> <span class="c1"># Use the datetime object</span>
2205
+<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="n">critical_asset</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
2206
+<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="p">)</span>
2207
+<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Agent metadata: </span><span class="si">{</span><span class="n">agent_metadata</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2208
+<a id="__codelineno-0-135" name="__codelineno-0-135"></a>
2209
+<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="k">try</span><span class="p">:</span>
2210
+<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">agent_metadata</span><span class="p">)</span>
2211
+<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
2212
+<a id="__codelineno-0-139" name="__codelineno-0-139"></a> <span class="k">return</span> <span class="n">agent_metadata</span>
2213
+<a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2214
+<a id="__codelineno-0-141" name="__codelineno-0-141"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to create agent: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2215
+<a id="__codelineno-0-142" name="__codelineno-0-142"></a> <span class="k">return</span> <span class="kc">None</span>
2216
<a id="__codelineno-0-143" name="__codelineno-0-143"></a>
2217
-<a id="__codelineno-0-144" name="__codelineno-0-144"></a><span class="sd"> Args:</span>
2218
-<a id="__codelineno-0-145" name="__codelineno-0-145"></a><span class="sd"> agent_id (str): The ID of the agent to delete.</span>
2219
-<a id="__codelineno-0-146" name="__codelineno-0-146"></a>
2220
-<a id="__codelineno-0-147" name="__codelineno-0-147"></a><span class="sd"> Returns:</span>
2221
-<a id="__codelineno-0-148" name="__codelineno-0-148"></a><span class="sd"> dict: A dictionary representing a success message if the operation was successful, otherwise an error</span>
2222
-<a id="__codelineno-0-149" name="__codelineno-0-149"></a><span class="sd"> message.</span>
2223
-<a id="__codelineno-0-150" name="__codelineno-0-150"></a><span class="sd"> """</span>
2224
-<a id="__codelineno-0-151" name="__codelineno-0-151"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2225
-<a id="__codelineno-0-152" name="__codelineno-0-152"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2226
-<a id="__codelineno-0-153" name="__codelineno-0-153"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2227
-<a id="__codelineno-0-154" name="__codelineno-0-154"></a> <span class="k">try</span><span class="p">:</span>
2228
-<a id="__codelineno-0-155" name="__codelineno-0-155"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2229
-<a id="__codelineno-0-156" name="__codelineno-0-156"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
2230
-<a id="__codelineno-0-157" name="__codelineno-0-157"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> deleted"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
2231
-<a id="__codelineno-0-158" name="__codelineno-0-158"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2232
-<a id="__codelineno-0-159" name="__codelineno-0-159"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to delete agent: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2233
-<a id="__codelineno-0-160" name="__codelineno-0-160"></a> <span class="k">return</span> <span class="p">{</span>
2234
-<a id="__codelineno-0-161" name="__codelineno-0-161"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Failed to delete agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
2235
-<a id="__codelineno-0-162" name="__codelineno-0-162"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2236
-<a id="__codelineno-0-163" name="__codelineno-0-163"></a> <span class="p">}</span>
2217
+<a id="__codelineno-0-144" name="__codelineno-0-144"></a> <span class="k">def</span> <span class="nf">delete_agent_db</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2218
+<a id="__codelineno-0-145" name="__codelineno-0-145"></a><span class="w"> </span><span class="sd">"""</span>
2219
+<a id="__codelineno-0-146" name="__codelineno-0-146"></a><span class="sd"> Deletes a specific agent from the database using its ID.</span>
2220
+<a id="__codelineno-0-147" name="__codelineno-0-147"></a>
2221
+<a id="__codelineno-0-148" name="__codelineno-0-148"></a><span class="sd"> Args:</span>
2222
+<a id="__codelineno-0-149" name="__codelineno-0-149"></a><span class="sd"> agent_id (str): The ID of the agent to delete.</span>
2223
+<a id="__codelineno-0-150" name="__codelineno-0-150"></a>
2224
+<a id="__codelineno-0-151" name="__codelineno-0-151"></a><span class="sd"> Returns:</span>
2225
+<a id="__codelineno-0-152" name="__codelineno-0-152"></a><span class="sd"> dict: A dictionary representing a success message if the operation was successful, otherwise an error</span>
2226
+<a id="__codelineno-0-153" name="__codelineno-0-153"></a><span class="sd"> message.</span>
2227
+<a id="__codelineno-0-154" name="__codelineno-0-154"></a><span class="sd"> """</span>
2228
+<a id="__codelineno-0-155" name="__codelineno-0-155"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2229
+<a id="__codelineno-0-156" name="__codelineno-0-156"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2230
+<a id="__codelineno-0-157" name="__codelineno-0-157"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2231
+<a id="__codelineno-0-158" name="__codelineno-0-158"></a> <span class="k">try</span><span class="p">:</span>
2232
+<a id="__codelineno-0-159" name="__codelineno-0-159"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2233
+<a id="__codelineno-0-160" name="__codelineno-0-160"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
2234
+<a id="__codelineno-0-161" name="__codelineno-0-161"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> deleted"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
2235
+<a id="__codelineno-0-162" name="__codelineno-0-162"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2236
+<a id="__codelineno-0-163" name="__codelineno-0-163"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to delete agent: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2237
+<a id="__codelineno-0-164" name="__codelineno-0-164"></a> <span class="k">return</span> <span class="p">{</span>
2238
+<a id="__codelineno-0-165" name="__codelineno-0-165"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Failed to delete agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
2239
+<a id="__codelineno-0-166" name="__codelineno-0-166"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2240
+<a id="__codelineno-0-167" name="__codelineno-0-167"></a> <span class="p">}</span>
2241
</code></pre></div></td></tr></table></div>
2242
</details>
2243
@@ -2315,11 +2319,7 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
2319
2320
<details class="quote">
2321
<summary>Source code in <code>app\services\agents\agents.py</code></summary>
2318
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-98"> 98</a></span>
2319
-<span class="normal"><a href="#__codelineno-0-99"> 99</a></span>
2320
-<span class="normal"><a href="#__codelineno-0-100">100</a></span>
2321
-<span class="normal"><a href="#__codelineno-0-101">101</a></span>
2322
-<span class="normal"><a href="#__codelineno-0-102">102</a></span>
2322
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-102">102</a></span>
2323
<span class="normal"><a href="#__codelineno-0-103">103</a></span>
2324
<span class="normal"><a href="#__codelineno-0-104">104</a></span>
2325
<span class="normal"><a href="#__codelineno-0-105">105</a></span>
@@ -2355,47 +2355,51 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
2355
<span class="normal"><a href="#__codelineno-0-135">135</a></span>
2356
<span class="normal"><a href="#__codelineno-0-136">136</a></span>
2357
<span class="normal"><a href="#__codelineno-0-137">137</a></span>
2358
-<span class="normal"><a href="#__codelineno-0-138">138</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-98" name="__codelineno-0-98"></a><span class="k">def</span> <span class="nf">create_agent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">AgentMetadata</span><span class="p">]:</span>
2359
-<a id="__codelineno-0-99" name="__codelineno-0-99"></a><span class="w"> </span><span class="sd">"""</span>
2360
-<a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="sd"> Creates a new agent in the database.</span>
2361
-<a id="__codelineno-0-101" name="__codelineno-0-101"></a>
2362
-<a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="sd"> Args:</span>
2363
-<a id="__codelineno-0-103" name="__codelineno-0-103"></a><span class="sd"> agent (dict): A dictionary containing the information of an agent.</span>
2364
-<a id="__codelineno-0-104" name="__codelineno-0-104"></a>
2365
-<a id="__codelineno-0-105" name="__codelineno-0-105"></a><span class="sd"> Returns:</span>
2366
-<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> The agent object if the agent was successfully created, None otherwise.</span>
2367
-<a id="__codelineno-0-107" name="__codelineno-0-107"></a><span class="sd"> """</span>
2368
-<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="k">try</span><span class="p">:</span>
2369
-<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="n">agent_last_seen</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span>
2370
-<a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="n">agent</span><span class="p">[</span><span class="s2">"agent_last_seen"</span><span class="p">],</span>
2371
-<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">T%H:%M:%S+00:00"</span><span class="p">,</span>
2372
-<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="p">)</span> <span class="c1"># Convert to datetime</span>
2373
-<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
2374
-<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
2375
-<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="sa">f</span><span class="s2">"Invalid format for agent_last_seen: </span><span class="si">{</span><span class="n">agent</span><span class="p">[</span><span class="s1">'agent_last_seen'</span><span class="p">]</span><span class="si">}</span><span class="s2">. Fixing..."</span><span class="p">,</span>
2376
-<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="p">)</span>
2377
-<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="n">agent_last_seen</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span>
2378
-<a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="s2">"1970-01-01T00:00:00+00:00"</span><span class="p">,</span>
2379
-<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">T%H:%M:%S+00:00"</span><span class="p">,</span>
2380
-<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="p">)</span> <span class="c1"># Use the epoch time as default</span>
2381
-<a id="__codelineno-0-121" name="__codelineno-0-121"></a>
2382
-<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="n">agent_metadata</span> <span class="o">=</span> <span class="n">AgentMetadata</span><span class="p">(</span>
2383
-<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="n">agent_id</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_id"</span><span class="p">],</span>
2384
-<a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="n">hostname</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_name"</span><span class="p">],</span>
2385
-<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="n">ip_address</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_ip"</span><span class="p">],</span>
2386
-<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="n">os</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_os"</span><span class="p">],</span>
2387
-<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="n">last_seen</span><span class="o">=</span><span class="n">agent_last_seen</span><span class="p">,</span> <span class="c1"># Use the datetime object</span>
2388
-<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="n">critical_asset</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
2389
-<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="p">)</span>
2390
-<a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Agent metadata: </span><span class="si">{</span><span class="n">agent_metadata</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2391
-<a id="__codelineno-0-131" name="__codelineno-0-131"></a>
2392
-<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="k">try</span><span class="p">:</span>
2393
-<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">agent_metadata</span><span class="p">)</span>
2394
-<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
2395
-<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="k">return</span> <span class="n">agent_metadata</span>
2396
-<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2397
-<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to create agent: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2398
-<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="k">return</span> <span class="kc">None</span>
2358
+<span class="normal"><a href="#__codelineno-0-138">138</a></span>
2359
+<span class="normal"><a href="#__codelineno-0-139">139</a></span>
2360
+<span class="normal"><a href="#__codelineno-0-140">140</a></span>
2361
+<span class="normal"><a href="#__codelineno-0-141">141</a></span>
2362
+<span class="normal"><a href="#__codelineno-0-142">142</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="k">def</span> <span class="nf">create_agent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">AgentMetadata</span><span class="p">]:</span>
2363
+<a id="__codelineno-0-103" name="__codelineno-0-103"></a><span class="w"> </span><span class="sd">"""</span>
2364
+<a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="sd"> Creates a new agent in the database.</span>
2365
+<a id="__codelineno-0-105" name="__codelineno-0-105"></a>
2366
+<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> Args:</span>
2367
+<a id="__codelineno-0-107" name="__codelineno-0-107"></a><span class="sd"> agent (dict): A dictionary containing the information of an agent.</span>
2368
+<a id="__codelineno-0-108" name="__codelineno-0-108"></a>
2369
+<a id="__codelineno-0-109" name="__codelineno-0-109"></a><span class="sd"> Returns:</span>
2370
+<a id="__codelineno-0-110" name="__codelineno-0-110"></a><span class="sd"> The agent object if the agent was successfully created, None otherwise.</span>
2371
+<a id="__codelineno-0-111" name="__codelineno-0-111"></a><span class="sd"> """</span>
2372
+<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="k">try</span><span class="p">:</span>
2373
+<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="n">agent_last_seen</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span>
2374
+<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="n">agent</span><span class="p">[</span><span class="s2">"agent_last_seen"</span><span class="p">],</span>
2375
+<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">T%H:%M:%S+00:00"</span><span class="p">,</span>
2376
+<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="p">)</span> <span class="c1"># Convert to datetime</span>
2377
+<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
2378
+<a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
2379
+<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="sa">f</span><span class="s2">"Invalid format for agent_last_seen: </span><span class="si">{</span><span class="n">agent</span><span class="p">[</span><span class="s1">'agent_last_seen'</span><span class="p">]</span><span class="si">}</span><span class="s2">. Fixing..."</span><span class="p">,</span>
2380
+<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="p">)</span>
2381
+<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="n">agent_last_seen</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span>
2382
+<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="s2">"1970-01-01T00:00:00+00:00"</span><span class="p">,</span>
2383
+<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">T%H:%M:%S+00:00"</span><span class="p">,</span>
2384
+<a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="p">)</span> <span class="c1"># Use the epoch time as default</span>
2385
+<a id="__codelineno-0-125" name="__codelineno-0-125"></a>
2386
+<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="n">agent_metadata</span> <span class="o">=</span> <span class="n">AgentMetadata</span><span class="p">(</span>
2387
+<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="n">agent_id</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_id"</span><span class="p">],</span>
2388
+<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="n">hostname</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_name"</span><span class="p">],</span>
2389
+<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="n">ip_address</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_ip"</span><span class="p">],</span>
2390
+<a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="n">os</span><span class="o">=</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_os"</span><span class="p">],</span>
2391
+<a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="n">last_seen</span><span class="o">=</span><span class="n">agent_last_seen</span><span class="p">,</span> <span class="c1"># Use the datetime object</span>
2392
+<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="n">critical_asset</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
2393
+<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="p">)</span>
2394
+<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Agent metadata: </span><span class="si">{</span><span class="n">agent_metadata</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2395
+<a id="__codelineno-0-135" name="__codelineno-0-135"></a>
2396
+<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="k">try</span><span class="p">:</span>
2397
+<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">agent_metadata</span><span class="p">)</span>
2398
+<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
2399
+<a id="__codelineno-0-139" name="__codelineno-0-139"></a> <span class="k">return</span> <span class="n">agent_metadata</span>
2400
+<a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2401
+<a id="__codelineno-0-141" name="__codelineno-0-141"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to create agent: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2402
+<a id="__codelineno-0-142" name="__codelineno-0-142"></a> <span class="k">return</span> <span class="kc">None</span>
2403
</code></pre></div></td></tr></table></div>
2404
</details>
2405
</div>
@@ -2478,11 +2482,7 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
2482
2483
<details class="quote">
2484
<summary>Source code in <code>app\services\agents\agents.py</code></summary>
2481
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-140">140</a></span>
2482
-<span class="normal"><a href="#__codelineno-0-141">141</a></span>
2483
-<span class="normal"><a href="#__codelineno-0-142">142</a></span>
2484
-<span class="normal"><a href="#__codelineno-0-143">143</a></span>
2485
-<span class="normal"><a href="#__codelineno-0-144">144</a></span>
2485
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-144">144</a></span>
2486
<span class="normal"><a href="#__codelineno-0-145">145</a></span>
2487
<span class="normal"><a href="#__codelineno-0-146">146</a></span>
2488
<span class="normal"><a href="#__codelineno-0-147">147</a></span>
@@ -2501,30 +2501,34 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
2501
<span class="normal"><a href="#__codelineno-0-160">160</a></span>
2502
<span class="normal"><a href="#__codelineno-0-161">161</a></span>
2503
<span class="normal"><a href="#__codelineno-0-162">162</a></span>
2504
-<span class="normal"><a href="#__codelineno-0-163">163</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-140" name="__codelineno-0-140"></a><span class="k">def</span> <span class="nf">delete_agent_db</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2505
-<a id="__codelineno-0-141" name="__codelineno-0-141"></a><span class="w"> </span><span class="sd">"""</span>
2506
-<a id="__codelineno-0-142" name="__codelineno-0-142"></a><span class="sd"> Deletes a specific agent from the database using its ID.</span>
2507
-<a id="__codelineno-0-143" name="__codelineno-0-143"></a>
2508
-<a id="__codelineno-0-144" name="__codelineno-0-144"></a><span class="sd"> Args:</span>
2509
-<a id="__codelineno-0-145" name="__codelineno-0-145"></a><span class="sd"> agent_id (str): The ID of the agent to delete.</span>
2510
-<a id="__codelineno-0-146" name="__codelineno-0-146"></a>
2511
-<a id="__codelineno-0-147" name="__codelineno-0-147"></a><span class="sd"> Returns:</span>
2512
-<a id="__codelineno-0-148" name="__codelineno-0-148"></a><span class="sd"> dict: A dictionary representing a success message if the operation was successful, otherwise an error</span>
2513
-<a id="__codelineno-0-149" name="__codelineno-0-149"></a><span class="sd"> message.</span>
2514
-<a id="__codelineno-0-150" name="__codelineno-0-150"></a><span class="sd"> """</span>
2515
-<a id="__codelineno-0-151" name="__codelineno-0-151"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2516
-<a id="__codelineno-0-152" name="__codelineno-0-152"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2517
-<a id="__codelineno-0-153" name="__codelineno-0-153"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2518
-<a id="__codelineno-0-154" name="__codelineno-0-154"></a> <span class="k">try</span><span class="p">:</span>
2519
-<a id="__codelineno-0-155" name="__codelineno-0-155"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2520
-<a id="__codelineno-0-156" name="__codelineno-0-156"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
2521
-<a id="__codelineno-0-157" name="__codelineno-0-157"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> deleted"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
2522
-<a id="__codelineno-0-158" name="__codelineno-0-158"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2523
-<a id="__codelineno-0-159" name="__codelineno-0-159"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to delete agent: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2524
-<a id="__codelineno-0-160" name="__codelineno-0-160"></a> <span class="k">return</span> <span class="p">{</span>
2525
-<a id="__codelineno-0-161" name="__codelineno-0-161"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Failed to delete agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
2526
-<a id="__codelineno-0-162" name="__codelineno-0-162"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2527
-<a id="__codelineno-0-163" name="__codelineno-0-163"></a> <span class="p">}</span>
2504
+<span class="normal"><a href="#__codelineno-0-163">163</a></span>
2505
+<span class="normal"><a href="#__codelineno-0-164">164</a></span>
2506
+<span class="normal"><a href="#__codelineno-0-165">165</a></span>
2507
+<span class="normal"><a href="#__codelineno-0-166">166</a></span>
2508
+<span class="normal"><a href="#__codelineno-0-167">167</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-144" name="__codelineno-0-144"></a><span class="k">def</span> <span class="nf">delete_agent_db</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2509
+<a id="__codelineno-0-145" name="__codelineno-0-145"></a><span class="w"> </span><span class="sd">"""</span>
2510
+<a id="__codelineno-0-146" name="__codelineno-0-146"></a><span class="sd"> Deletes a specific agent from the database using its ID.</span>
2511
+<a id="__codelineno-0-147" name="__codelineno-0-147"></a>
2512
+<a id="__codelineno-0-148" name="__codelineno-0-148"></a><span class="sd"> Args:</span>
2513
+<a id="__codelineno-0-149" name="__codelineno-0-149"></a><span class="sd"> agent_id (str): The ID of the agent to delete.</span>
2514
+<a id="__codelineno-0-150" name="__codelineno-0-150"></a>
2515
+<a id="__codelineno-0-151" name="__codelineno-0-151"></a><span class="sd"> Returns:</span>
2516
+<a id="__codelineno-0-152" name="__codelineno-0-152"></a><span class="sd"> dict: A dictionary representing a success message if the operation was successful, otherwise an error</span>
2517
+<a id="__codelineno-0-153" name="__codelineno-0-153"></a><span class="sd"> message.</span>
2518
+<a id="__codelineno-0-154" name="__codelineno-0-154"></a><span class="sd"> """</span>
2519
+<a id="__codelineno-0-155" name="__codelineno-0-155"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2520
+<a id="__codelineno-0-156" name="__codelineno-0-156"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2521
+<a id="__codelineno-0-157" name="__codelineno-0-157"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2522
+<a id="__codelineno-0-158" name="__codelineno-0-158"></a> <span class="k">try</span><span class="p">:</span>
2523
+<a id="__codelineno-0-159" name="__codelineno-0-159"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2524
+<a id="__codelineno-0-160" name="__codelineno-0-160"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
2525
+<a id="__codelineno-0-161" name="__codelineno-0-161"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> deleted"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
2526
+<a id="__codelineno-0-162" name="__codelineno-0-162"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2527
+<a id="__codelineno-0-163" name="__codelineno-0-163"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to delete agent: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2528
+<a id="__codelineno-0-164" name="__codelineno-0-164"></a> <span class="k">return</span> <span class="p">{</span>
2529
+<a id="__codelineno-0-165" name="__codelineno-0-165"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Failed to delete agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
2530
+<a id="__codelineno-0-166" name="__codelineno-0-166"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2531
+<a id="__codelineno-0-167" name="__codelineno-0-167"></a> <span class="p">}</span>
2532
</code></pre></div></td></tr></table></div>
2533
</details>
2534
</div>
@@ -2607,11 +2611,7 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
2611
2612
<details class="quote">
2613
<summary>Source code in <code>app\services\agents\agents.py</code></summary>
2610
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-32">32</a></span>
2611
-<span class="normal"><a href="#__codelineno-0-33">33</a></span>
2612
-<span class="normal"><a href="#__codelineno-0-34">34</a></span>
2613
-<span class="normal"><a href="#__codelineno-0-35">35</a></span>
2614
-<span class="normal"><a href="#__codelineno-0-36">36</a></span>
2614
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-36">36</a></span>
2615
<span class="normal"><a href="#__codelineno-0-37">37</a></span>
2616
<span class="normal"><a href="#__codelineno-0-38">38</a></span>
2617
<span class="normal"><a href="#__codelineno-0-39">39</a></span>
@@ -2621,21 +2621,25 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
2621
<span class="normal"><a href="#__codelineno-0-43">43</a></span>
2622
<span class="normal"><a href="#__codelineno-0-44">44</a></span>
2623
<span class="normal"><a href="#__codelineno-0-45">45</a></span>
2624
-<span class="normal"><a href="#__codelineno-0-46">46</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="k">def</span> <span class="nf">get_agent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2625
-<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="w"> </span><span class="sd">"""</span>
2626
-<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> Retrieves a specific agent from the database using its ID.</span>
2627
-<a id="__codelineno-0-35" name="__codelineno-0-35"></a>
2628
-<a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="sd"> Args:</span>
2629
-<a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="sd"> agent_id (str): The ID of the agent to retrieve.</span>
2630
-<a id="__codelineno-0-38" name="__codelineno-0-38"></a>
2631
-<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> Returns:</span>
2632
-<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="sd"> dict: A dictionary representing the serialized data of the agent if found, otherwise a message indicating</span>
2633
-<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> that the agent was not found.</span>
2634
-<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> """</span>
2635
-<a id="__codelineno-0-43" name="__codelineno-0-43"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2636
-<a id="__codelineno-0-44" name="__codelineno-0-44"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2637
-<a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">}</span>
2638
-<a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="k">return</span> <span class="n">agent_metadata_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2624
+<span class="normal"><a href="#__codelineno-0-46">46</a></span>
2625
+<span class="normal"><a href="#__codelineno-0-47">47</a></span>
2626
+<span class="normal"><a href="#__codelineno-0-48">48</a></span>
2627
+<span class="normal"><a href="#__codelineno-0-49">49</a></span>
2628
+<span class="normal"><a href="#__codelineno-0-50">50</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="k">def</span> <span class="nf">get_agent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2629
+<a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="w"> </span><span class="sd">"""</span>
2630
+<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="sd"> Retrieves a specific agent from the database using its ID.</span>
2631
+<a id="__codelineno-0-39" name="__codelineno-0-39"></a>
2632
+<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="sd"> Args:</span>
2633
+<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> agent_id (str): The ID of the agent to retrieve.</span>
2634
+<a id="__codelineno-0-42" name="__codelineno-0-42"></a>
2635
+<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> Returns:</span>
2636
+<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> dict: A dictionary representing the serialized data of the agent if found, otherwise a message indicating</span>
2637
+<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> that the agent was not found.</span>
2638
+<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> """</span>
2639
+<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2640
+<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2641
+<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">}</span>
2642
+<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">return</span> <span class="n">agent_metadata_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2643
</code></pre></div></td></tr></table></div>
2644
</details>
2645
</div>
@@ -2680,23 +2684,23 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
2684
2685
<details class="quote">
2686
<summary>Source code in <code>app\services\agents\agents.py</code></summary>
2683
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-22">22</a></span>
2684
-<span class="normal"><a href="#__codelineno-0-23">23</a></span>
2685
-<span class="normal"><a href="#__codelineno-0-24">24</a></span>
2686
-<span class="normal"><a href="#__codelineno-0-25">25</a></span>
2687
-<span class="normal"><a href="#__codelineno-0-26">26</a></span>
2687
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-26">26</a></span>
2688
<span class="normal"><a href="#__codelineno-0-27">27</a></span>
2689
<span class="normal"><a href="#__codelineno-0-28">28</a></span>
2690
<span class="normal"><a href="#__codelineno-0-29">29</a></span>
2691
-<span class="normal"><a href="#__codelineno-0-30">30</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="k">def</span> <span class="nf">get_all_agents</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]]:</span>
2692
-<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="w"> </span><span class="sd">"""</span>
2693
-<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> Retrieves all agents from the database.</span>
2694
-<a id="__codelineno-0-25" name="__codelineno-0-25"></a>
2695
-<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="sd"> Returns:</span>
2696
-<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> List[dict]: A list of dictionaries where each dictionary represents the serialized data of an agent.</span>
2697
-<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> """</span>
2698
-<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="n">agents</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
2699
-<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="k">return</span> <span class="n">agent_metadatas_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agents</span><span class="p">)</span>
2691
+<span class="normal"><a href="#__codelineno-0-30">30</a></span>
2692
+<span class="normal"><a href="#__codelineno-0-31">31</a></span>
2693
+<span class="normal"><a href="#__codelineno-0-32">32</a></span>
2694
+<span class="normal"><a href="#__codelineno-0-33">33</a></span>
2695
+<span class="normal"><a href="#__codelineno-0-34">34</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="k">def</span> <span class="nf">get_all_agents</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]]:</span>
2696
+<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="w"> </span><span class="sd">"""</span>
2697
+<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> Retrieves all agents from the database.</span>
2698
+<a id="__codelineno-0-29" name="__codelineno-0-29"></a>
2699
+<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> Returns:</span>
2700
+<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> List[dict]: A list of dictionaries where each dictionary represents the serialized data of an agent.</span>
2701
+<a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="sd"> """</span>
2702
+<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="n">agents</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
2703
+<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="k">return</span> <span class="n">agent_metadatas_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agents</span><span class="p">)</span>
2704
</code></pre></div></td></tr></table></div>
2705
</details>
2706
</div>
@@ -2779,11 +2783,7 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
2783
2784
<details class="quote">
2785
<summary>Source code in <code>app\services\agents\agents.py</code></summary>
2782
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-48">48</a></span>
2783
-<span class="normal"><a href="#__codelineno-0-49">49</a></span>
2784
-<span class="normal"><a href="#__codelineno-0-50">50</a></span>
2785
-<span class="normal"><a href="#__codelineno-0-51">51</a></span>
2786
-<span class="normal"><a href="#__codelineno-0-52">52</a></span>
2786
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-52">52</a></span>
2787
<span class="normal"><a href="#__codelineno-0-53">53</a></span>
2788
<span class="normal"><a href="#__codelineno-0-54">54</a></span>
2789
<span class="normal"><a href="#__codelineno-0-55">55</a></span>
@@ -2802,30 +2802,34 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
2802
<span class="normal"><a href="#__codelineno-0-68">68</a></span>
2803
<span class="normal"><a href="#__codelineno-0-69">69</a></span>
2804
<span class="normal"><a href="#__codelineno-0-70">70</a></span>
2805
-<span class="normal"><a href="#__codelineno-0-71">71</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="k">def</span> <span class="nf">mark_agent_as_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2806
-<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="w"> </span><span class="sd">"""</span>
2807
-<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="sd"> Marks a specific agent as critical.</span>
2808
-<a id="__codelineno-0-51" name="__codelineno-0-51"></a>
2809
-<a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="sd"> Args:</span>
2810
-<a id="__codelineno-0-53" name="__codelineno-0-53"></a><span class="sd"> agent_id (str): The ID of the agent to mark as critical.</span>
2811
-<a id="__codelineno-0-54" name="__codelineno-0-54"></a>
2812
-<a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="sd"> Returns:</span>
2813
-<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> dict: A dictionary representing a success message if the operation was successful, otherwise an error</span>
2814
-<a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="sd"> message.</span>
2815
-<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> """</span>
2816
-<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2817
-<a id="__codelineno-0-60" name="__codelineno-0-60"></a>
2818
-<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2819
-<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2820
-<a id="__codelineno-0-63" name="__codelineno-0-63"></a>
2821
-<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="n">agent</span><span class="o">.</span><span class="n">mark_as_critical</span><span class="p">()</span>
2822
-<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="n">agent_details</span> <span class="o">=</span> <span class="n">agent_metadata_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2823
-<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">if</span> <span class="n">agent_details</span><span class="p">[</span><span class="s2">"critical_asset"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
2824
-<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="k">return</span> <span class="p">{</span>
2825
-<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> failed to mark agent as critical"</span><span class="p">,</span>
2826
-<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2827
-<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="p">}</span>
2828
-<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> marked as critical"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
2805
+<span class="normal"><a href="#__codelineno-0-71">71</a></span>
2806
+<span class="normal"><a href="#__codelineno-0-72">72</a></span>
2807
+<span class="normal"><a href="#__codelineno-0-73">73</a></span>
2808
+<span class="normal"><a href="#__codelineno-0-74">74</a></span>
2809
+<span class="normal"><a href="#__codelineno-0-75">75</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="k">def</span> <span class="nf">mark_agent_as_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2810
+<a id="__codelineno-0-53" name="__codelineno-0-53"></a><span class="w"> </span><span class="sd">"""</span>
2811
+<a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="sd"> Marks a specific agent as critical.</span>
2812
+<a id="__codelineno-0-55" name="__codelineno-0-55"></a>
2813
+<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> Args:</span>
2814
+<a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="sd"> agent_id (str): The ID of the agent to mark as critical.</span>
2815
+<a id="__codelineno-0-58" name="__codelineno-0-58"></a>
2816
+<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="sd"> Returns:</span>
2817
+<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="sd"> dict: A dictionary representing a success message if the operation was successful, otherwise an error</span>
2818
+<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> message.</span>
2819
+<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> """</span>
2820
+<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2821
+<a id="__codelineno-0-64" name="__codelineno-0-64"></a>
2822
+<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2823
+<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2824
+<a id="__codelineno-0-67" name="__codelineno-0-67"></a>
2825
+<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="n">agent</span><span class="o">.</span><span class="n">mark_as_critical</span><span class="p">()</span>
2826
+<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="n">agent_details</span> <span class="o">=</span> <span class="n">agent_metadata_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2827
+<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="k">if</span> <span class="n">agent_details</span><span class="p">[</span><span class="s2">"critical_asset"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
2828
+<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="k">return</span> <span class="p">{</span>
2829
+<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> failed to mark agent as critical"</span><span class="p">,</span>
2830
+<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2831
+<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="p">}</span>
2832
+<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> marked as critical"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
2833
</code></pre></div></td></tr></table></div>
2834
</details>
2835
</div>
@@ -2908,53 +2912,53 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
2912
2913
<details class="quote">
2914
<summary>Source code in <code>app\services\agents\agents.py</code></summary>
2911
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-73">73</a></span>
2912
-<span class="normal"><a href="#__codelineno-0-74">74</a></span>
2913
-<span class="normal"><a href="#__codelineno-0-75">75</a></span>
2914
-<span class="normal"><a href="#__codelineno-0-76">76</a></span>
2915
-<span class="normal"><a href="#__codelineno-0-77">77</a></span>
2916
-<span class="normal"><a href="#__codelineno-0-78">78</a></span>
2917
-<span class="normal"><a href="#__codelineno-0-79">79</a></span>
2918
-<span class="normal"><a href="#__codelineno-0-80">80</a></span>
2919
-<span class="normal"><a href="#__codelineno-0-81">81</a></span>
2920
-<span class="normal"><a href="#__codelineno-0-82">82</a></span>
2921
-<span class="normal"><a href="#__codelineno-0-83">83</a></span>
2922
-<span class="normal"><a href="#__codelineno-0-84">84</a></span>
2923
-<span class="normal"><a href="#__codelineno-0-85">85</a></span>
2924
-<span class="normal"><a href="#__codelineno-0-86">86</a></span>
2925
-<span class="normal"><a href="#__codelineno-0-87">87</a></span>
2926
-<span class="normal"><a href="#__codelineno-0-88">88</a></span>
2927
-<span class="normal"><a href="#__codelineno-0-89">89</a></span>
2928
-<span class="normal"><a href="#__codelineno-0-90">90</a></span>
2929
-<span class="normal"><a href="#__codelineno-0-91">91</a></span>
2930
-<span class="normal"><a href="#__codelineno-0-92">92</a></span>
2931
-<span class="normal"><a href="#__codelineno-0-93">93</a></span>
2932
-<span class="normal"><a href="#__codelineno-0-94">94</a></span>
2933
-<span class="normal"><a href="#__codelineno-0-95">95</a></span>
2934
-<span class="normal"><a href="#__codelineno-0-96">96</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="k">def</span> <span class="nf">mark_agent_as_non_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2935
-<a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="w"> </span><span class="sd">"""</span>
2936
-<a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="sd"> Marks a specific agent as non-critical.</span>
2937
-<a id="__codelineno-0-76" name="__codelineno-0-76"></a>
2938
-<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> Args:</span>
2939
-<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="sd"> agent_id (str): The ID of the agent to mark as non-critical.</span>
2940
-<a id="__codelineno-0-79" name="__codelineno-0-79"></a>
2941
-<a id="__codelineno-0-80" name="__codelineno-0-80"></a><span class="sd"> Returns:</span>
2942
-<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> dict: A dictionary representing a success message if the operation was successful, otherwise an error</span>
2943
-<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="sd"> message.</span>
2944
-<a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="sd"> """</span>
2945
-<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2946
-<a id="__codelineno-0-85" name="__codelineno-0-85"></a>
2947
-<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2948
-<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2949
-<a id="__codelineno-0-88" name="__codelineno-0-88"></a>
2950
-<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="n">agent</span><span class="o">.</span><span class="n">mark_as_non_critical</span><span class="p">()</span>
2951
-<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="n">agent_details</span> <span class="o">=</span> <span class="n">agent_metadata_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2952
-<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="k">if</span> <span class="n">agent_details</span><span class="p">[</span><span class="s2">"critical_asset"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
2953
-<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="k">return</span> <span class="p">{</span>
2954
-<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> failed to mark agent as non-critical"</span><span class="p">,</span>
2955
-<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2956
-<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="p">}</span>
2957
-<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> marked as non-critical"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
2915
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-77"> 77</a></span>
2916
+<span class="normal"><a href="#__codelineno-0-78"> 78</a></span>
2917
+<span class="normal"><a href="#__codelineno-0-79"> 79</a></span>
2918
+<span class="normal"><a href="#__codelineno-0-80"> 80</a></span>
2919
+<span class="normal"><a href="#__codelineno-0-81"> 81</a></span>
2920
+<span class="normal"><a href="#__codelineno-0-82"> 82</a></span>
2921
+<span class="normal"><a href="#__codelineno-0-83"> 83</a></span>
2922
+<span class="normal"><a href="#__codelineno-0-84"> 84</a></span>
2923
+<span class="normal"><a href="#__codelineno-0-85"> 85</a></span>
2924
+<span class="normal"><a href="#__codelineno-0-86"> 86</a></span>
2925
+<span class="normal"><a href="#__codelineno-0-87"> 87</a></span>
2926
+<span class="normal"><a href="#__codelineno-0-88"> 88</a></span>
2927
+<span class="normal"><a href="#__codelineno-0-89"> 89</a></span>
2928
+<span class="normal"><a href="#__codelineno-0-90"> 90</a></span>
2929
+<span class="normal"><a href="#__codelineno-0-91"> 91</a></span>
2930
+<span class="normal"><a href="#__codelineno-0-92"> 92</a></span>
2931
+<span class="normal"><a href="#__codelineno-0-93"> 93</a></span>
2932
+<span class="normal"><a href="#__codelineno-0-94"> 94</a></span>
2933
+<span class="normal"><a href="#__codelineno-0-95"> 95</a></span>
2934
+<span class="normal"><a href="#__codelineno-0-96"> 96</a></span>
2935
+<span class="normal"><a href="#__codelineno-0-97"> 97</a></span>
2936
+<span class="normal"><a href="#__codelineno-0-98"> 98</a></span>
2937
+<span class="normal"><a href="#__codelineno-0-99"> 99</a></span>
2938
+<span class="normal"><a href="#__codelineno-0-100">100</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="k">def</span> <span class="nf">mark_agent_as_non_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2939
+<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="w"> </span><span class="sd">"""</span>
2940
+<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> Marks a specific agent as non-critical.</span>
2941
+<a id="__codelineno-0-80" name="__codelineno-0-80"></a>
2942
+<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> Args:</span>
2943
+<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="sd"> agent_id (str): The ID of the agent to mark as non-critical.</span>
2944
+<a id="__codelineno-0-83" name="__codelineno-0-83"></a>
2945
+<a id="__codelineno-0-84" name="__codelineno-0-84"></a><span class="sd"> Returns:</span>
2946
+<a id="__codelineno-0-85" name="__codelineno-0-85"></a><span class="sd"> dict: A dictionary representing a success message if the operation was successful, otherwise an error</span>
2947
+<a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="sd"> message.</span>
2948
+<a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="sd"> """</span>
2949
+<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">filter_by</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
2950
+<a id="__codelineno-0-89" name="__codelineno-0-89"></a>
2951
+<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2952
+<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2953
+<a id="__codelineno-0-92" name="__codelineno-0-92"></a>
2954
+<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="n">agent</span><span class="o">.</span><span class="n">mark_as_non_critical</span><span class="p">()</span>
2955
+<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="n">agent_details</span> <span class="o">=</span> <span class="n">agent_metadata_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2956
+<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="k">if</span> <span class="n">agent_details</span><span class="p">[</span><span class="s2">"critical_asset"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
2957
+<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="k">return</span> <span class="p">{</span>
2958
+<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> failed to mark agent as non-critical"</span><span class="p">,</span>
2959
+<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2960
+<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="p">}</span>
2961
+<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> marked as non-critical"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
2962
</code></pre></div></td></tr></table></div>
2963
</details>
2964
</div>
@@ -2986,11 +2990,7 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
2990
2991
<details class="quote">
2992
<summary>Source code in <code>app\services\agents\agents.py</code></summary>
2989
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-166">166</a></span>
2990
-<span class="normal"><a href="#__codelineno-0-167">167</a></span>
2991
-<span class="normal"><a href="#__codelineno-0-168">168</a></span>
2992
-<span class="normal"><a href="#__codelineno-0-169">169</a></span>
2993
-<span class="normal"><a href="#__codelineno-0-170">170</a></span>
2993
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-170">170</a></span>
2994
<span class="normal"><a href="#__codelineno-0-171">171</a></span>
2995
<span class="normal"><a href="#__codelineno-0-172">172</a></span>
2996
<span class="normal"><a href="#__codelineno-0-173">173</a></span>
@@ -3088,109 +3088,127 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
3088
<span class="normal"><a href="#__codelineno-0-265">265</a></span>
3089
<span class="normal"><a href="#__codelineno-0-266">266</a></span>
3090
<span class="normal"><a href="#__codelineno-0-267">267</a></span>
3091
-<span class="normal"><a href="#__codelineno-0-268">268</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-166" name="__codelineno-0-166"></a><span class="k">class</span> <span class="nc">AgentSyncService</span><span class="p">:</span>
3092
-<a id="__codelineno-0-167" name="__codelineno-0-167"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
3093
-<a id="__codelineno-0-168" name="__codelineno-0-168"></a> <span class="bp">self</span><span class="o">.</span><span class="n">agent_service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
3094
-<a id="__codelineno-0-169" name="__codelineno-0-169"></a>
3095
-<a id="__codelineno-0-170" name="__codelineno-0-170"></a> <span class="k">def</span> <span class="nf">collect_wazuh_details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
3096
-<a id="__codelineno-0-171" name="__codelineno-0-171"></a><span class="w"> </span><span class="sd">"""</span>
3097
-<a id="__codelineno-0-172" name="__codelineno-0-172"></a><span class="sd"> Collects the information of all Wazuh API credentials using the WazuhIndexerConnector class details.</span>
3091
+<span class="normal"><a href="#__codelineno-0-268">268</a></span>
3092
+<span class="normal"><a href="#__codelineno-0-269">269</a></span>
3093
+<span class="normal"><a href="#__codelineno-0-270">270</a></span>
3094
+<span class="normal"><a href="#__codelineno-0-271">271</a></span>
3095
+<span class="normal"><a href="#__codelineno-0-272">272</a></span>
3096
+<span class="normal"><a href="#__codelineno-0-273">273</a></span>
3097
+<span class="normal"><a href="#__codelineno-0-274">274</a></span>
3098
+<span class="normal"><a href="#__codelineno-0-275">275</a></span>
3099
+<span class="normal"><a href="#__codelineno-0-276">276</a></span>
3100
+<span class="normal"><a href="#__codelineno-0-277">277</a></span>
3101
+<span class="normal"><a href="#__codelineno-0-278">278</a></span>
3102
+<span class="normal"><a href="#__codelineno-0-279">279</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-170" name="__codelineno-0-170"></a><span class="k">class</span> <span class="nc">AgentSyncService</span><span class="p">:</span>
3103
+<a id="__codelineno-0-171" name="__codelineno-0-171"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
3104
+<a id="__codelineno-0-172" name="__codelineno-0-172"></a> <span class="bp">self</span><span class="o">.</span><span class="n">agent_service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
3105
<a id="__codelineno-0-173" name="__codelineno-0-173"></a>
3099
-<a id="__codelineno-0-174" name="__codelineno-0-174"></a><span class="sd"> Returns:</span>
3100
-<a id="__codelineno-0-175" name="__codelineno-0-175"></a><span class="sd"> tuple: A tuple containing the connection URL, username, and password.</span>
3101
-<a id="__codelineno-0-176" name="__codelineno-0-176"></a><span class="sd"> """</span>
3102
-<a id="__codelineno-0-177" name="__codelineno-0-177"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
3103
-<a id="__codelineno-0-178" name="__codelineno-0-178"></a> <span class="n">connection_successful</span> <span class="o">=</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">()</span>
3104
-<a id="__codelineno-0-179" name="__codelineno-0-179"></a> <span class="k">if</span> <span class="n">connection_successful</span><span class="p">:</span>
3105
-<a id="__codelineno-0-180" name="__codelineno-0-180"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
3106
-<a id="__codelineno-0-181" name="__codelineno-0-181"></a> <span class="k">return</span> <span class="p">(</span>
3107
-<a id="__codelineno-0-182" name="__codelineno-0-182"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_url"</span><span class="p">),</span>
3108
-<a id="__codelineno-0-183" name="__codelineno-0-183"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_username"</span><span class="p">),</span>
3109
-<a id="__codelineno-0-184" name="__codelineno-0-184"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_password"</span><span class="p">),</span>
3110
-<a id="__codelineno-0-185" name="__codelineno-0-185"></a> <span class="p">)</span>
3111
-<a id="__codelineno-0-186" name="__codelineno-0-186"></a> <span class="k">else</span><span class="p">:</span>
3112
-<a id="__codelineno-0-187" name="__codelineno-0-187"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
3113
-<a id="__codelineno-0-188" name="__codelineno-0-188"></a>
3114
-<a id="__codelineno-0-189" name="__codelineno-0-189"></a> <span class="k">def</span> <span class="nf">collect_wazuh_agents</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connection_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">wazuh_auth_token</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]]:</span>
3115
-<a id="__codelineno-0-190" name="__codelineno-0-190"></a><span class="w"> </span><span class="sd">"""</span>
3116
-<a id="__codelineno-0-191" name="__codelineno-0-191"></a><span class="sd"> Collects the information of all agents from the Wazuh API.</span>
3117
-<a id="__codelineno-0-192" name="__codelineno-0-192"></a>
3118
-<a id="__codelineno-0-193" name="__codelineno-0-193"></a><span class="sd"> Returns:</span>
3119
-<a id="__codelineno-0-194" name="__codelineno-0-194"></a><span class="sd"> list: A list containing the information of all Wazuh agents.</span>
3120
-<a id="__codelineno-0-195" name="__codelineno-0-195"></a><span class="sd"> """</span>
3121
-<a id="__codelineno-0-196" name="__codelineno-0-196"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Collecting Wazuh Agents"</span><span class="p">)</span>
3122
-<a id="__codelineno-0-197" name="__codelineno-0-197"></a> <span class="k">try</span><span class="p">:</span>
3123
-<a id="__codelineno-0-198" name="__codelineno-0-198"></a> <span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"Authorization"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Bearer </span><span class="si">{</span><span class="n">wazuh_auth_token</span><span class="si">}</span><span class="s2">"</span><span class="p">}</span>
3124
-<a id="__codelineno-0-199" name="__codelineno-0-199"></a> <span class="n">limit</span> <span class="o">=</span> <span class="mi">1000</span>
3125
-<a id="__codelineno-0-200" name="__codelineno-0-200"></a> <span class="n">agents_collected</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
3126
-<a id="__codelineno-0-201" name="__codelineno-0-201"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">connection_url</span><span class="si">}</span><span class="s2">/agents?limit=</span><span class="si">{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
3127
-<a id="__codelineno-0-202" name="__codelineno-0-202"></a> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span>
3128
-<a id="__codelineno-0-203" name="__codelineno-0-203"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
3129
-<a id="__codelineno-0-204" name="__codelineno-0-204"></a> <span class="p">)</span>
3130
-<a id="__codelineno-0-205" name="__codelineno-0-205"></a> <span class="k">if</span> <span class="n">agents_collected</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
3131
-<a id="__codelineno-0-206" name="__codelineno-0-206"></a> <span class="n">wazuh_agents_list</span> <span class="o">=</span> <span class="p">[]</span>
3132
-<a id="__codelineno-0-207" name="__codelineno-0-207"></a> <span class="k">for</span> <span class="n">agent</span> <span class="ow">in</span> <span class="n">agents_collected</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">"data"</span><span class="p">][</span><span class="s2">"affected_items"</span><span class="p">]:</span>
3133
-<a id="__codelineno-0-208" name="__codelineno-0-208"></a> <span class="n">os_name</span> <span class="o">=</span> <span class="n">agent</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"os"</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"name"</span><span class="p">,</span> <span class="s2">"Unknown"</span><span class="p">)</span>
3134
-<a id="__codelineno-0-209" name="__codelineno-0-209"></a> <span class="n">last_keep_alive</span> <span class="o">=</span> <span class="n">agent</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"lastKeepAlive"</span><span class="p">,</span> <span class="s2">"Unknown"</span><span class="p">)</span>
3135
-<a id="__codelineno-0-210" name="__codelineno-0-210"></a> <span class="n">wazuh_agents_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
3136
-<a id="__codelineno-0-211" name="__codelineno-0-211"></a> <span class="p">{</span>
3137
-<a id="__codelineno-0-212" name="__codelineno-0-212"></a> <span class="s2">"agent_id"</span><span class="p">:</span> <span class="n">agent</span><span class="p">[</span><span class="s2">"id"</span><span class="p">],</span>
3138
-<a id="__codelineno-0-213" name="__codelineno-0-213"></a> <span class="s2">"agent_name"</span><span class="p">:</span> <span class="n">agent</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span>
3139
-<a id="__codelineno-0-214" name="__codelineno-0-214"></a> <span class="s2">"agent_ip"</span><span class="p">:</span> <span class="n">agent</span><span class="p">[</span><span class="s2">"ip"</span><span class="p">],</span>
3140
-<a id="__codelineno-0-215" name="__codelineno-0-215"></a> <span class="s2">"agent_os"</span><span class="p">:</span> <span class="n">os_name</span><span class="p">,</span>
3141
-<a id="__codelineno-0-216" name="__codelineno-0-216"></a> <span class="s2">"agent_last_seen"</span><span class="p">:</span> <span class="n">last_keep_alive</span><span class="p">,</span>
3142
-<a id="__codelineno-0-217" name="__codelineno-0-217"></a> <span class="p">},</span>
3143
-<a id="__codelineno-0-218" name="__codelineno-0-218"></a> <span class="p">)</span>
3144
-<a id="__codelineno-0-219" name="__codelineno-0-219"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Collected Wazuh Agent: </span><span class="si">{</span><span class="n">agent</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
3145
-<a id="__codelineno-0-220" name="__codelineno-0-220"></a> <span class="k">return</span> <span class="n">wazuh_agents_list</span>
3146
-<a id="__codelineno-0-221" name="__codelineno-0-221"></a> <span class="k">else</span><span class="p">:</span>
3147
-<a id="__codelineno-0-222" name="__codelineno-0-222"></a> <span class="k">return</span> <span class="kc">None</span>
3148
-<a id="__codelineno-0-223" name="__codelineno-0-223"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
3149
-<a id="__codelineno-0-224" name="__codelineno-0-224"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect Wazuh Agents: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
3150
-<a id="__codelineno-0-225" name="__codelineno-0-225"></a> <span class="k">return</span> <span class="kc">None</span>
3151
-<a id="__codelineno-0-226" name="__codelineno-0-226"></a>
3152
-<a id="__codelineno-0-227" name="__codelineno-0-227"></a> <span class="k">def</span> <span class="nf">sync_agents</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]]]:</span>
3153
-<a id="__codelineno-0-228" name="__codelineno-0-228"></a> <span class="p">(</span>
3154
-<a id="__codelineno-0-229" name="__codelineno-0-229"></a> <span class="n">connection_url</span><span class="p">,</span>
3155
-<a id="__codelineno-0-230" name="__codelineno-0-230"></a> <span class="n">connection_username</span><span class="p">,</span>
3156
-<a id="__codelineno-0-231" name="__codelineno-0-231"></a> <span class="n">connection_password</span><span class="p">,</span>
3157
-<a id="__codelineno-0-232" name="__codelineno-0-232"></a> <span class="p">)</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_wazuh_details</span><span class="p">(</span><span class="s2">"Wazuh-Manager"</span><span class="p">)</span>
3158
-<a id="__codelineno-0-233" name="__codelineno-0-233"></a> <span class="k">if</span> <span class="n">connection_url</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
3159
-<a id="__codelineno-0-234" name="__codelineno-0-234"></a> <span class="k">return</span> <span class="p">{</span>
3160
-<a id="__codelineno-0-235" name="__codelineno-0-235"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to get Wazuh-Manager API details"</span><span class="p">,</span>
3161
-<a id="__codelineno-0-236" name="__codelineno-0-236"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
3162
-<a id="__codelineno-0-237" name="__codelineno-0-237"></a> <span class="p">}</span>
3163
-<a id="__codelineno-0-238" name="__codelineno-0-238"></a>
3164
-<a id="__codelineno-0-239" name="__codelineno-0-239"></a> <span class="n">wazuh_manager_connector</span> <span class="o">=</span> <span class="n">WazuhManagerConnector</span><span class="p">(</span><span class="s2">"Wazuh-Manager"</span><span class="p">)</span>
3165
-<a id="__codelineno-0-240" name="__codelineno-0-240"></a> <span class="n">wazuh_auth_token</span> <span class="o">=</span> <span class="n">wazuh_manager_connector</span><span class="o">.</span><span class="n">get_auth_token</span><span class="p">()</span>
3166
-<a id="__codelineno-0-241" name="__codelineno-0-241"></a> <span class="k">if</span> <span class="n">wazuh_auth_token</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
3167
-<a id="__codelineno-0-242" name="__codelineno-0-242"></a> <span class="k">return</span> <span class="p">{</span>
3168
-<a id="__codelineno-0-243" name="__codelineno-0-243"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to get Wazuh-Manager API Auth Token"</span><span class="p">,</span>
3169
-<a id="__codelineno-0-244" name="__codelineno-0-244"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
3170
-<a id="__codelineno-0-245" name="__codelineno-0-245"></a> <span class="p">}</span>
3171
-<a id="__codelineno-0-246" name="__codelineno-0-246"></a>
3172
-<a id="__codelineno-0-247" name="__codelineno-0-247"></a> <span class="n">wazuh_agents_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_wazuh_agents</span><span class="p">(</span><span class="n">connection_url</span><span class="p">,</span> <span class="n">wazuh_auth_token</span><span class="p">)</span>
3173
-<a id="__codelineno-0-248" name="__codelineno-0-248"></a> <span class="k">if</span> <span class="n">wazuh_agents_list</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
3174
-<a id="__codelineno-0-249" name="__codelineno-0-249"></a> <span class="k">return</span> <span class="p">{</span>
3175
-<a id="__codelineno-0-250" name="__codelineno-0-250"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Wazuh-Manager Agents"</span><span class="p">,</span>
3176
-<a id="__codelineno-0-251" name="__codelineno-0-251"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
3177
-<a id="__codelineno-0-252" name="__codelineno-0-252"></a> <span class="p">}</span>
3178
-<a id="__codelineno-0-253" name="__codelineno-0-253"></a>
3179
-<a id="__codelineno-0-254" name="__codelineno-0-254"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Collected </span><span class="si">{</span><span class="n">wazuh_agents_list</span><span class="si">}</span><span class="s2"> Wazuh Agents"</span><span class="p">)</span>
3180
-<a id="__codelineno-0-255" name="__codelineno-0-255"></a>
3181
-<a id="__codelineno-0-256" name="__codelineno-0-256"></a> <span class="n">agents_added_list</span> <span class="o">=</span> <span class="p">[]</span>
3182
-<a id="__codelineno-0-257" name="__codelineno-0-257"></a> <span class="k">for</span> <span class="n">agent</span> <span class="ow">in</span> <span class="n">wazuh_agents_list</span><span class="p">:</span>
3183
-<a id="__codelineno-0-258" name="__codelineno-0-258"></a> <span class="n">agent_info</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">agent_service</span><span class="o">.</span><span class="n">get_agent</span><span class="p">(</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_id"</span><span class="p">])</span>
3184
-<a id="__codelineno-0-259" name="__codelineno-0-259"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Agent info: </span><span class="si">{</span><span class="n">agent_info</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
3185
-<a id="__codelineno-0-260" name="__codelineno-0-260"></a> <span class="k">if</span> <span class="s2">"message"</span> <span class="ow">in</span> <span class="n">agent_info</span><span class="p">:</span>
3186
-<a id="__codelineno-0-261" name="__codelineno-0-261"></a> <span class="bp">self</span><span class="o">.</span><span class="n">agent_service</span><span class="o">.</span><span class="n">create_agent</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
3187
-<a id="__codelineno-0-262" name="__codelineno-0-262"></a> <span class="n">agents_added_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
3188
-<a id="__codelineno-0-263" name="__codelineno-0-263"></a>
3189
-<a id="__codelineno-0-264" name="__codelineno-0-264"></a> <span class="k">return</span> <span class="p">{</span>
3190
-<a id="__codelineno-0-265" name="__codelineno-0-265"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully synced agents."</span><span class="p">,</span>
3191
-<a id="__codelineno-0-266" name="__codelineno-0-266"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
3192
-<a id="__codelineno-0-267" name="__codelineno-0-267"></a> <span class="s2">"agents_added"</span><span class="p">:</span> <span class="n">agents_added_list</span><span class="p">,</span>
3193
-<a id="__codelineno-0-268" name="__codelineno-0-268"></a> <span class="p">}</span>
3106
+<a id="__codelineno-0-174" name="__codelineno-0-174"></a> <span class="k">def</span> <span class="nf">collect_wazuh_details</span><span class="p">(</span>
3107
+<a id="__codelineno-0-175" name="__codelineno-0-175"></a> <span class="bp">self</span><span class="p">,</span>
3108
+<a id="__codelineno-0-176" name="__codelineno-0-176"></a> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3109
+<a id="__codelineno-0-177" name="__codelineno-0-177"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
3110
+<a id="__codelineno-0-178" name="__codelineno-0-178"></a><span class="w"> </span><span class="sd">"""</span>
3111
+<a id="__codelineno-0-179" name="__codelineno-0-179"></a><span class="sd"> Collects the information of all Wazuh API credentials using the WazuhIndexerConnector class details.</span>
3112
+<a id="__codelineno-0-180" name="__codelineno-0-180"></a>
3113
+<a id="__codelineno-0-181" name="__codelineno-0-181"></a><span class="sd"> Returns:</span>
3114
+<a id="__codelineno-0-182" name="__codelineno-0-182"></a><span class="sd"> tuple: A tuple containing the connection URL, username, and password.</span>
3115
+<a id="__codelineno-0-183" name="__codelineno-0-183"></a><span class="sd"> """</span>
3116
+<a id="__codelineno-0-184" name="__codelineno-0-184"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
3117
+<a id="__codelineno-0-185" name="__codelineno-0-185"></a> <span class="n">connection_successful</span> <span class="o">=</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">()</span>
3118
+<a id="__codelineno-0-186" name="__codelineno-0-186"></a> <span class="k">if</span> <span class="n">connection_successful</span><span class="p">:</span>
3119
+<a id="__codelineno-0-187" name="__codelineno-0-187"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
3120
+<a id="__codelineno-0-188" name="__codelineno-0-188"></a> <span class="k">return</span> <span class="p">(</span>
3121
+<a id="__codelineno-0-189" name="__codelineno-0-189"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_url"</span><span class="p">),</span>
3122
+<a id="__codelineno-0-190" name="__codelineno-0-190"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_username"</span><span class="p">),</span>
3123
+<a id="__codelineno-0-191" name="__codelineno-0-191"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_password"</span><span class="p">),</span>
3124
+<a id="__codelineno-0-192" name="__codelineno-0-192"></a> <span class="p">)</span>
3125
+<a id="__codelineno-0-193" name="__codelineno-0-193"></a> <span class="k">else</span><span class="p">:</span>
3126
+<a id="__codelineno-0-194" name="__codelineno-0-194"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
3127
+<a id="__codelineno-0-195" name="__codelineno-0-195"></a>
3128
+<a id="__codelineno-0-196" name="__codelineno-0-196"></a> <span class="k">def</span> <span class="nf">collect_wazuh_agents</span><span class="p">(</span>
3129
+<a id="__codelineno-0-197" name="__codelineno-0-197"></a> <span class="bp">self</span><span class="p">,</span>
3130
+<a id="__codelineno-0-198" name="__codelineno-0-198"></a> <span class="n">connection_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3131
+<a id="__codelineno-0-199" name="__codelineno-0-199"></a> <span class="n">wazuh_auth_token</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3132
+<a id="__codelineno-0-200" name="__codelineno-0-200"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]]:</span>
3133
+<a id="__codelineno-0-201" name="__codelineno-0-201"></a><span class="w"> </span><span class="sd">"""</span>
3134
+<a id="__codelineno-0-202" name="__codelineno-0-202"></a><span class="sd"> Collects the information of all agents from the Wazuh API.</span>
3135
+<a id="__codelineno-0-203" name="__codelineno-0-203"></a>
3136
+<a id="__codelineno-0-204" name="__codelineno-0-204"></a><span class="sd"> Returns:</span>
3137
+<a id="__codelineno-0-205" name="__codelineno-0-205"></a><span class="sd"> list: A list containing the information of all Wazuh agents.</span>
3138
+<a id="__codelineno-0-206" name="__codelineno-0-206"></a><span class="sd"> """</span>
3139
+<a id="__codelineno-0-207" name="__codelineno-0-207"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Collecting Wazuh Agents"</span><span class="p">)</span>
3140
+<a id="__codelineno-0-208" name="__codelineno-0-208"></a> <span class="k">try</span><span class="p">:</span>
3141
+<a id="__codelineno-0-209" name="__codelineno-0-209"></a> <span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"Authorization"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Bearer </span><span class="si">{</span><span class="n">wazuh_auth_token</span><span class="si">}</span><span class="s2">"</span><span class="p">}</span>
3142
+<a id="__codelineno-0-210" name="__codelineno-0-210"></a> <span class="n">limit</span> <span class="o">=</span> <span class="mi">1000</span>
3143
+<a id="__codelineno-0-211" name="__codelineno-0-211"></a> <span class="n">agents_collected</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
3144
+<a id="__codelineno-0-212" name="__codelineno-0-212"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">connection_url</span><span class="si">}</span><span class="s2">/agents?limit=</span><span class="si">{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
3145
+<a id="__codelineno-0-213" name="__codelineno-0-213"></a> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span>
3146
+<a id="__codelineno-0-214" name="__codelineno-0-214"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
3147
+<a id="__codelineno-0-215" name="__codelineno-0-215"></a> <span class="p">)</span>
3148
+<a id="__codelineno-0-216" name="__codelineno-0-216"></a> <span class="k">if</span> <span class="n">agents_collected</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
3149
+<a id="__codelineno-0-217" name="__codelineno-0-217"></a> <span class="n">wazuh_agents_list</span> <span class="o">=</span> <span class="p">[]</span>
3150
+<a id="__codelineno-0-218" name="__codelineno-0-218"></a> <span class="k">for</span> <span class="n">agent</span> <span class="ow">in</span> <span class="n">agents_collected</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">"data"</span><span class="p">][</span><span class="s2">"affected_items"</span><span class="p">]:</span>
3151
+<a id="__codelineno-0-219" name="__codelineno-0-219"></a> <span class="n">os_name</span> <span class="o">=</span> <span class="n">agent</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"os"</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"name"</span><span class="p">,</span> <span class="s2">"Unknown"</span><span class="p">)</span>
3152
+<a id="__codelineno-0-220" name="__codelineno-0-220"></a> <span class="n">last_keep_alive</span> <span class="o">=</span> <span class="n">agent</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"lastKeepAlive"</span><span class="p">,</span> <span class="s2">"Unknown"</span><span class="p">)</span>
3153
+<a id="__codelineno-0-221" name="__codelineno-0-221"></a> <span class="n">wazuh_agents_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
3154
+<a id="__codelineno-0-222" name="__codelineno-0-222"></a> <span class="p">{</span>
3155
+<a id="__codelineno-0-223" name="__codelineno-0-223"></a> <span class="s2">"agent_id"</span><span class="p">:</span> <span class="n">agent</span><span class="p">[</span><span class="s2">"id"</span><span class="p">],</span>
3156
+<a id="__codelineno-0-224" name="__codelineno-0-224"></a> <span class="s2">"agent_name"</span><span class="p">:</span> <span class="n">agent</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span>
3157
+<a id="__codelineno-0-225" name="__codelineno-0-225"></a> <span class="s2">"agent_ip"</span><span class="p">:</span> <span class="n">agent</span><span class="p">[</span><span class="s2">"ip"</span><span class="p">],</span>
3158
+<a id="__codelineno-0-226" name="__codelineno-0-226"></a> <span class="s2">"agent_os"</span><span class="p">:</span> <span class="n">os_name</span><span class="p">,</span>
3159
+<a id="__codelineno-0-227" name="__codelineno-0-227"></a> <span class="s2">"agent_last_seen"</span><span class="p">:</span> <span class="n">last_keep_alive</span><span class="p">,</span>
3160
+<a id="__codelineno-0-228" name="__codelineno-0-228"></a> <span class="p">},</span>
3161
+<a id="__codelineno-0-229" name="__codelineno-0-229"></a> <span class="p">)</span>
3162
+<a id="__codelineno-0-230" name="__codelineno-0-230"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Collected Wazuh Agent: </span><span class="si">{</span><span class="n">agent</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
3163
+<a id="__codelineno-0-231" name="__codelineno-0-231"></a> <span class="k">return</span> <span class="n">wazuh_agents_list</span>
3164
+<a id="__codelineno-0-232" name="__codelineno-0-232"></a> <span class="k">else</span><span class="p">:</span>
3165
+<a id="__codelineno-0-233" name="__codelineno-0-233"></a> <span class="k">return</span> <span class="kc">None</span>
3166
+<a id="__codelineno-0-234" name="__codelineno-0-234"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
3167
+<a id="__codelineno-0-235" name="__codelineno-0-235"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect Wazuh Agents: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
3168
+<a id="__codelineno-0-236" name="__codelineno-0-236"></a> <span class="k">return</span> <span class="kc">None</span>
3169
+<a id="__codelineno-0-237" name="__codelineno-0-237"></a>
3170
+<a id="__codelineno-0-238" name="__codelineno-0-238"></a> <span class="k">def</span> <span class="nf">sync_agents</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]]]:</span>
3171
+<a id="__codelineno-0-239" name="__codelineno-0-239"></a> <span class="p">(</span>
3172
+<a id="__codelineno-0-240" name="__codelineno-0-240"></a> <span class="n">connection_url</span><span class="p">,</span>
3173
+<a id="__codelineno-0-241" name="__codelineno-0-241"></a> <span class="n">connection_username</span><span class="p">,</span>
3174
+<a id="__codelineno-0-242" name="__codelineno-0-242"></a> <span class="n">connection_password</span><span class="p">,</span>
3175
+<a id="__codelineno-0-243" name="__codelineno-0-243"></a> <span class="p">)</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_wazuh_details</span><span class="p">(</span><span class="s2">"Wazuh-Manager"</span><span class="p">)</span>
3176
+<a id="__codelineno-0-244" name="__codelineno-0-244"></a> <span class="k">if</span> <span class="n">connection_url</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
3177
+<a id="__codelineno-0-245" name="__codelineno-0-245"></a> <span class="k">return</span> <span class="p">{</span>
3178
+<a id="__codelineno-0-246" name="__codelineno-0-246"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to get Wazuh-Manager API details"</span><span class="p">,</span>
3179
+<a id="__codelineno-0-247" name="__codelineno-0-247"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
3180
+<a id="__codelineno-0-248" name="__codelineno-0-248"></a> <span class="p">}</span>
3181
+<a id="__codelineno-0-249" name="__codelineno-0-249"></a>
3182
+<a id="__codelineno-0-250" name="__codelineno-0-250"></a> <span class="n">wazuh_manager_connector</span> <span class="o">=</span> <span class="n">WazuhManagerConnector</span><span class="p">(</span><span class="s2">"Wazuh-Manager"</span><span class="p">)</span>
3183
+<a id="__codelineno-0-251" name="__codelineno-0-251"></a> <span class="n">wazuh_auth_token</span> <span class="o">=</span> <span class="n">wazuh_manager_connector</span><span class="o">.</span><span class="n">get_auth_token</span><span class="p">()</span>
3184
+<a id="__codelineno-0-252" name="__codelineno-0-252"></a> <span class="k">if</span> <span class="n">wazuh_auth_token</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
3185
+<a id="__codelineno-0-253" name="__codelineno-0-253"></a> <span class="k">return</span> <span class="p">{</span>
3186
+<a id="__codelineno-0-254" name="__codelineno-0-254"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to get Wazuh-Manager API Auth Token"</span><span class="p">,</span>
3187
+<a id="__codelineno-0-255" name="__codelineno-0-255"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
3188
+<a id="__codelineno-0-256" name="__codelineno-0-256"></a> <span class="p">}</span>
3189
+<a id="__codelineno-0-257" name="__codelineno-0-257"></a>
3190
+<a id="__codelineno-0-258" name="__codelineno-0-258"></a> <span class="n">wazuh_agents_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_wazuh_agents</span><span class="p">(</span><span class="n">connection_url</span><span class="p">,</span> <span class="n">wazuh_auth_token</span><span class="p">)</span>
3191
+<a id="__codelineno-0-259" name="__codelineno-0-259"></a> <span class="k">if</span> <span class="n">wazuh_agents_list</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
3192
+<a id="__codelineno-0-260" name="__codelineno-0-260"></a> <span class="k">return</span> <span class="p">{</span>
3193
+<a id="__codelineno-0-261" name="__codelineno-0-261"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Wazuh-Manager Agents"</span><span class="p">,</span>
3194
+<a id="__codelineno-0-262" name="__codelineno-0-262"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
3195
+<a id="__codelineno-0-263" name="__codelineno-0-263"></a> <span class="p">}</span>
3196
+<a id="__codelineno-0-264" name="__codelineno-0-264"></a>
3197
+<a id="__codelineno-0-265" name="__codelineno-0-265"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Collected </span><span class="si">{</span><span class="n">wazuh_agents_list</span><span class="si">}</span><span class="s2"> Wazuh Agents"</span><span class="p">)</span>
3198
+<a id="__codelineno-0-266" name="__codelineno-0-266"></a>
3199
+<a id="__codelineno-0-267" name="__codelineno-0-267"></a> <span class="n">agents_added_list</span> <span class="o">=</span> <span class="p">[]</span>
3200
+<a id="__codelineno-0-268" name="__codelineno-0-268"></a> <span class="k">for</span> <span class="n">agent</span> <span class="ow">in</span> <span class="n">wazuh_agents_list</span><span class="p">:</span>
3201
+<a id="__codelineno-0-269" name="__codelineno-0-269"></a> <span class="n">agent_info</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">agent_service</span><span class="o">.</span><span class="n">get_agent</span><span class="p">(</span><span class="n">agent</span><span class="p">[</span><span class="s2">"agent_id"</span><span class="p">])</span>
3202
+<a id="__codelineno-0-270" name="__codelineno-0-270"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Agent info: </span><span class="si">{</span><span class="n">agent_info</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
3203
+<a id="__codelineno-0-271" name="__codelineno-0-271"></a> <span class="k">if</span> <span class="s2">"message"</span> <span class="ow">in</span> <span class="n">agent_info</span><span class="p">:</span>
3204
+<a id="__codelineno-0-272" name="__codelineno-0-272"></a> <span class="bp">self</span><span class="o">.</span><span class="n">agent_service</span><span class="o">.</span><span class="n">create_agent</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
3205
+<a id="__codelineno-0-273" name="__codelineno-0-273"></a> <span class="n">agents_added_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
3206
+<a id="__codelineno-0-274" name="__codelineno-0-274"></a>
3207
+<a id="__codelineno-0-275" name="__codelineno-0-275"></a> <span class="k">return</span> <span class="p">{</span>
3208
+<a id="__codelineno-0-276" name="__codelineno-0-276"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully synced agents."</span><span class="p">,</span>
3209
+<a id="__codelineno-0-277" name="__codelineno-0-277"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
3210
+<a id="__codelineno-0-278" name="__codelineno-0-278"></a> <span class="s2">"agents_added"</span><span class="p">:</span> <span class="n">agents_added_list</span><span class="p">,</span>
3211
+<a id="__codelineno-0-279" name="__codelineno-0-279"></a> <span class="p">}</span>
3212
</code></pre></div></td></tr></table></div>
3213
</details>
3214
@@ -3244,14 +3262,7 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
3262
3263
<details class="quote">
3264
<summary>Source code in <code>app\services\agents\agents.py</code></summary>
3247
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-189">189</a></span>
3248
-<span class="normal"><a href="#__codelineno-0-190">190</a></span>
3249
-<span class="normal"><a href="#__codelineno-0-191">191</a></span>
3250
-<span class="normal"><a href="#__codelineno-0-192">192</a></span>
3251
-<span class="normal"><a href="#__codelineno-0-193">193</a></span>
3252
-<span class="normal"><a href="#__codelineno-0-194">194</a></span>
3253
-<span class="normal"><a href="#__codelineno-0-195">195</a></span>
3254
-<span class="normal"><a href="#__codelineno-0-196">196</a></span>
3265
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-196">196</a></span>
3266
<span class="normal"><a href="#__codelineno-0-197">197</a></span>
3267
<span class="normal"><a href="#__codelineno-0-198">198</a></span>
3268
<span class="normal"><a href="#__codelineno-0-199">199</a></span>
@@ -3280,43 +3291,58 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
3291
<span class="normal"><a href="#__codelineno-0-222">222</a></span>
3292
<span class="normal"><a href="#__codelineno-0-223">223</a></span>
3293
<span class="normal"><a href="#__codelineno-0-224">224</a></span>
3283
-<span class="normal"><a href="#__codelineno-0-225">225</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-189" name="__codelineno-0-189"></a><span class="k">def</span> <span class="nf">collect_wazuh_agents</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connection_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">wazuh_auth_token</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]]:</span>
3284
-<a id="__codelineno-0-190" name="__codelineno-0-190"></a><span class="w"> </span><span class="sd">"""</span>
3285
-<a id="__codelineno-0-191" name="__codelineno-0-191"></a><span class="sd"> Collects the information of all agents from the Wazuh API.</span>
3286
-<a id="__codelineno-0-192" name="__codelineno-0-192"></a>
3287
-<a id="__codelineno-0-193" name="__codelineno-0-193"></a><span class="sd"> Returns:</span>
3288
-<a id="__codelineno-0-194" name="__codelineno-0-194"></a><span class="sd"> list: A list containing the information of all Wazuh agents.</span>
3289
-<a id="__codelineno-0-195" name="__codelineno-0-195"></a><span class="sd"> """</span>
3290
-<a id="__codelineno-0-196" name="__codelineno-0-196"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Collecting Wazuh Agents"</span><span class="p">)</span>
3291
-<a id="__codelineno-0-197" name="__codelineno-0-197"></a> <span class="k">try</span><span class="p">:</span>
3292
-<a id="__codelineno-0-198" name="__codelineno-0-198"></a> <span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"Authorization"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Bearer </span><span class="si">{</span><span class="n">wazuh_auth_token</span><span class="si">}</span><span class="s2">"</span><span class="p">}</span>
3293
-<a id="__codelineno-0-199" name="__codelineno-0-199"></a> <span class="n">limit</span> <span class="o">=</span> <span class="mi">1000</span>
3294
-<a id="__codelineno-0-200" name="__codelineno-0-200"></a> <span class="n">agents_collected</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
3295
-<a id="__codelineno-0-201" name="__codelineno-0-201"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">connection_url</span><span class="si">}</span><span class="s2">/agents?limit=</span><span class="si">{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
3296
-<a id="__codelineno-0-202" name="__codelineno-0-202"></a> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span>
3297
-<a id="__codelineno-0-203" name="__codelineno-0-203"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
3298
-<a id="__codelineno-0-204" name="__codelineno-0-204"></a> <span class="p">)</span>
3299
-<a id="__codelineno-0-205" name="__codelineno-0-205"></a> <span class="k">if</span> <span class="n">agents_collected</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
3300
-<a id="__codelineno-0-206" name="__codelineno-0-206"></a> <span class="n">wazuh_agents_list</span> <span class="o">=</span> <span class="p">[]</span>
3301
-<a id="__codelineno-0-207" name="__codelineno-0-207"></a> <span class="k">for</span> <span class="n">agent</span> <span class="ow">in</span> <span class="n">agents_collected</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">"data"</span><span class="p">][</span><span class="s2">"affected_items"</span><span class="p">]:</span>
3302
-<a id="__codelineno-0-208" name="__codelineno-0-208"></a> <span class="n">os_name</span> <span class="o">=</span> <span class="n">agent</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"os"</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"name"</span><span class="p">,</span> <span class="s2">"Unknown"</span><span class="p">)</span>
3303
-<a id="__codelineno-0-209" name="__codelineno-0-209"></a> <span class="n">last_keep_alive</span> <span class="o">=</span> <span class="n">agent</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"lastKeepAlive"</span><span class="p">,</span> <span class="s2">"Unknown"</span><span class="p">)</span>
3304
-<a id="__codelineno-0-210" name="__codelineno-0-210"></a> <span class="n">wazuh_agents_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
3305
-<a id="__codelineno-0-211" name="__codelineno-0-211"></a> <span class="p">{</span>
3306
-<a id="__codelineno-0-212" name="__codelineno-0-212"></a> <span class="s2">"agent_id"</span><span class="p">:</span> <span class="n">agent</span><span class="p">[</span><span class="s2">"id"</span><span class="p">],</span>
3307
-<a id="__codelineno-0-213" name="__codelineno-0-213"></a> <span class="s2">"agent_name"</span><span class="p">:</span> <span class="n">agent</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span>
3308
-<a id="__codelineno-0-214" name="__codelineno-0-214"></a> <span class="s2">"agent_ip"</span><span class="p">:</span> <span class="n">agent</span><span class="p">[</span><span class="s2">"ip"</span><span class="p">],</span>
3309
-<a id="__codelineno-0-215" name="__codelineno-0-215"></a> <span class="s2">"agent_os"</span><span class="p">:</span> <span class="n">os_name</span><span class="p">,</span>
3310
-<a id="__codelineno-0-216" name="__codelineno-0-216"></a> <span class="s2">"agent_last_seen"</span><span class="p">:</span> <span class="n">last_keep_alive</span><span class="p">,</span>
3311
-<a id="__codelineno-0-217" name="__codelineno-0-217"></a> <span class="p">},</span>
3312
-<a id="__codelineno-0-218" name="__codelineno-0-218"></a> <span class="p">)</span>
3313
-<a id="__codelineno-0-219" name="__codelineno-0-219"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Collected Wazuh Agent: </span><span class="si">{</span><span class="n">agent</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
3314
-<a id="__codelineno-0-220" name="__codelineno-0-220"></a> <span class="k">return</span> <span class="n">wazuh_agents_list</span>
3315
-<a id="__codelineno-0-221" name="__codelineno-0-221"></a> <span class="k">else</span><span class="p">:</span>
3316
-<a id="__codelineno-0-222" name="__codelineno-0-222"></a> <span class="k">return</span> <span class="kc">None</span>
3317
-<a id="__codelineno-0-223" name="__codelineno-0-223"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
3318
-<a id="__codelineno-0-224" name="__codelineno-0-224"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect Wazuh Agents: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
3319
-<a id="__codelineno-0-225" name="__codelineno-0-225"></a> <span class="k">return</span> <span class="kc">None</span>
3294
+<span class="normal"><a href="#__codelineno-0-225">225</a></span>
3295
+<span class="normal"><a href="#__codelineno-0-226">226</a></span>
3296
+<span class="normal"><a href="#__codelineno-0-227">227</a></span>
3297
+<span class="normal"><a href="#__codelineno-0-228">228</a></span>
3298
+<span class="normal"><a href="#__codelineno-0-229">229</a></span>
3299
+<span class="normal"><a href="#__codelineno-0-230">230</a></span>
3300
+<span class="normal"><a href="#__codelineno-0-231">231</a></span>
3301
+<span class="normal"><a href="#__codelineno-0-232">232</a></span>
3302
+<span class="normal"><a href="#__codelineno-0-233">233</a></span>
3303
+<span class="normal"><a href="#__codelineno-0-234">234</a></span>
3304
+<span class="normal"><a href="#__codelineno-0-235">235</a></span>
3305
+<span class="normal"><a href="#__codelineno-0-236">236</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-196" name="__codelineno-0-196"></a><span class="k">def</span> <span class="nf">collect_wazuh_agents</span><span class="p">(</span>
3306
+<a id="__codelineno-0-197" name="__codelineno-0-197"></a> <span class="bp">self</span><span class="p">,</span>
3307
+<a id="__codelineno-0-198" name="__codelineno-0-198"></a> <span class="n">connection_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3308
+<a id="__codelineno-0-199" name="__codelineno-0-199"></a> <span class="n">wazuh_auth_token</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3309
+<a id="__codelineno-0-200" name="__codelineno-0-200"></a><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]]:</span>
3310
+<a id="__codelineno-0-201" name="__codelineno-0-201"></a><span class="w"> </span><span class="sd">"""</span>
3311
+<a id="__codelineno-0-202" name="__codelineno-0-202"></a><span class="sd"> Collects the information of all agents from the Wazuh API.</span>
3312
+<a id="__codelineno-0-203" name="__codelineno-0-203"></a>
3313
+<a id="__codelineno-0-204" name="__codelineno-0-204"></a><span class="sd"> Returns:</span>
3314
+<a id="__codelineno-0-205" name="__codelineno-0-205"></a><span class="sd"> list: A list containing the information of all Wazuh agents.</span>
3315
+<a id="__codelineno-0-206" name="__codelineno-0-206"></a><span class="sd"> """</span>
3316
+<a id="__codelineno-0-207" name="__codelineno-0-207"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Collecting Wazuh Agents"</span><span class="p">)</span>
3317
+<a id="__codelineno-0-208" name="__codelineno-0-208"></a> <span class="k">try</span><span class="p">:</span>
3318
+<a id="__codelineno-0-209" name="__codelineno-0-209"></a> <span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"Authorization"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Bearer </span><span class="si">{</span><span class="n">wazuh_auth_token</span><span class="si">}</span><span class="s2">"</span><span class="p">}</span>
3319
+<a id="__codelineno-0-210" name="__codelineno-0-210"></a> <span class="n">limit</span> <span class="o">=</span> <span class="mi">1000</span>
3320
+<a id="__codelineno-0-211" name="__codelineno-0-211"></a> <span class="n">agents_collected</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
3321
+<a id="__codelineno-0-212" name="__codelineno-0-212"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">connection_url</span><span class="si">}</span><span class="s2">/agents?limit=</span><span class="si">{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
3322
+<a id="__codelineno-0-213" name="__codelineno-0-213"></a> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span>
3323
+<a id="__codelineno-0-214" name="__codelineno-0-214"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
3324
+<a id="__codelineno-0-215" name="__codelineno-0-215"></a> <span class="p">)</span>
3325
+<a id="__codelineno-0-216" name="__codelineno-0-216"></a> <span class="k">if</span> <span class="n">agents_collected</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
3326
+<a id="__codelineno-0-217" name="__codelineno-0-217"></a> <span class="n">wazuh_agents_list</span> <span class="o">=</span> <span class="p">[]</span>
3327
+<a id="__codelineno-0-218" name="__codelineno-0-218"></a> <span class="k">for</span> <span class="n">agent</span> <span class="ow">in</span> <span class="n">agents_collected</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">"data"</span><span class="p">][</span><span class="s2">"affected_items"</span><span class="p">]:</span>
3328
+<a id="__codelineno-0-219" name="__codelineno-0-219"></a> <span class="n">os_name</span> <span class="o">=</span> <span class="n">agent</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"os"</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"name"</span><span class="p">,</span> <span class="s2">"Unknown"</span><span class="p">)</span>
3329
+<a id="__codelineno-0-220" name="__codelineno-0-220"></a> <span class="n">last_keep_alive</span> <span class="o">=</span> <span class="n">agent</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"lastKeepAlive"</span><span class="p">,</span> <span class="s2">"Unknown"</span><span class="p">)</span>
3330
+<a id="__codelineno-0-221" name="__codelineno-0-221"></a> <span class="n">wazuh_agents_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
3331
+<a id="__codelineno-0-222" name="__codelineno-0-222"></a> <span class="p">{</span>
3332
+<a id="__codelineno-0-223" name="__codelineno-0-223"></a> <span class="s2">"agent_id"</span><span class="p">:</span> <span class="n">agent</span><span class="p">[</span><span class="s2">"id"</span><span class="p">],</span>
3333
+<a id="__codelineno-0-224" name="__codelineno-0-224"></a> <span class="s2">"agent_name"</span><span class="p">:</span> <span class="n">agent</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span>
3334
+<a id="__codelineno-0-225" name="__codelineno-0-225"></a> <span class="s2">"agent_ip"</span><span class="p">:</span> <span class="n">agent</span><span class="p">[</span><span class="s2">"ip"</span><span class="p">],</span>
3335
+<a id="__codelineno-0-226" name="__codelineno-0-226"></a> <span class="s2">"agent_os"</span><span class="p">:</span> <span class="n">os_name</span><span class="p">,</span>
3336
+<a id="__codelineno-0-227" name="__codelineno-0-227"></a> <span class="s2">"agent_last_seen"</span><span class="p">:</span> <span class="n">last_keep_alive</span><span class="p">,</span>
3337
+<a id="__codelineno-0-228" name="__codelineno-0-228"></a> <span class="p">},</span>
3338
+<a id="__codelineno-0-229" name="__codelineno-0-229"></a> <span class="p">)</span>
3339
+<a id="__codelineno-0-230" name="__codelineno-0-230"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Collected Wazuh Agent: </span><span class="si">{</span><span class="n">agent</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
3340
+<a id="__codelineno-0-231" name="__codelineno-0-231"></a> <span class="k">return</span> <span class="n">wazuh_agents_list</span>
3341
+<a id="__codelineno-0-232" name="__codelineno-0-232"></a> <span class="k">else</span><span class="p">:</span>
3342
+<a id="__codelineno-0-233" name="__codelineno-0-233"></a> <span class="k">return</span> <span class="kc">None</span>
3343
+<a id="__codelineno-0-234" name="__codelineno-0-234"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
3344
+<a id="__codelineno-0-235" name="__codelineno-0-235"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect Wazuh Agents: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
3345
+<a id="__codelineno-0-236" name="__codelineno-0-236"></a> <span class="k">return</span> <span class="kc">None</span>
3346
</code></pre></div></td></tr></table></div>
3347
</details>
3348
</div>
@@ -3361,11 +3387,7 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
3387
3388
<details class="quote">
3389
<summary>Source code in <code>app\services\agents\agents.py</code></summary>
3364
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-170">170</a></span>
3365
-<span class="normal"><a href="#__codelineno-0-171">171</a></span>
3366
-<span class="normal"><a href="#__codelineno-0-172">172</a></span>
3367
-<span class="normal"><a href="#__codelineno-0-173">173</a></span>
3368
-<span class="normal"><a href="#__codelineno-0-174">174</a></span>
3390
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-174">174</a></span>
3391
<span class="normal"><a href="#__codelineno-0-175">175</a></span>
3392
<span class="normal"><a href="#__codelineno-0-176">176</a></span>
3393
<span class="normal"><a href="#__codelineno-0-177">177</a></span>
@@ -3378,24 +3400,34 @@ and boolean for critical asset. This class inherits from SQLAlchemy's Model clas
3400
<span class="normal"><a href="#__codelineno-0-184">184</a></span>
3401
<span class="normal"><a href="#__codelineno-0-185">185</a></span>
3402
<span class="normal"><a href="#__codelineno-0-186">186</a></span>
3381
-<span class="normal"><a href="#__codelineno-0-187">187</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-170" name="__codelineno-0-170"></a><span class="k">def</span> <span class="nf">collect_wazuh_details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
3382
-<a id="__codelineno-0-171" name="__codelineno-0-171"></a><span class="w"> </span><span class="sd">"""</span>
3383
-<a id="__codelineno-0-172" name="__codelineno-0-172"></a><span class="sd"> Collects the information of all Wazuh API credentials using the WazuhIndexerConnector class details.</span>
3384
-<a id="__codelineno-0-173" name="__codelineno-0-173"></a>
3385
-<a id="__codelineno-0-174" name="__codelineno-0-174"></a><span class="sd"> Returns:</span>
3386
-<a id="__codelineno-0-175" name="__codelineno-0-175"></a><span class="sd"> tuple: A tuple containing the connection URL, username, and password.</span>
3387
-<a id="__codelineno-0-176" name="__codelineno-0-176"></a><span class="sd"> """</span>
3388
-<a id="__codelineno-0-177" name="__codelineno-0-177"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
3389
-<a id="__codelineno-0-178" name="__codelineno-0-178"></a> <span class="n">connection_successful</span> <span class="o">=</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">()</span>
3390
-<a id="__codelineno-0-179" name="__codelineno-0-179"></a> <span class="k">if</span> <span class="n">connection_successful</span><span class="p">:</span>
3391
-<a id="__codelineno-0-180" name="__codelineno-0-180"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
3392
-<a id="__codelineno-0-181" name="__codelineno-0-181"></a> <span class="k">return</span> <span class="p">(</span>
3393
-<a id="__codelineno-0-182" name="__codelineno-0-182"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_url"</span><span class="p">),</span>
3394
-<a id="__codelineno-0-183" name="__codelineno-0-183"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_username"</span><span class="p">),</span>
3395
-<a id="__codelineno-0-184" name="__codelineno-0-184"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_password"</span><span class="p">),</span>
3396
-<a id="__codelineno-0-185" name="__codelineno-0-185"></a> <span class="p">)</span>
3397
-<a id="__codelineno-0-186" name="__codelineno-0-186"></a> <span class="k">else</span><span class="p">:</span>
3398
-<a id="__codelineno-0-187" name="__codelineno-0-187"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
3403
+<span class="normal"><a href="#__codelineno-0-187">187</a></span>
3404
+<span class="normal"><a href="#__codelineno-0-188">188</a></span>
3405
+<span class="normal"><a href="#__codelineno-0-189">189</a></span>
3406
+<span class="normal"><a href="#__codelineno-0-190">190</a></span>
3407
+<span class="normal"><a href="#__codelineno-0-191">191</a></span>
3408
+<span class="normal"><a href="#__codelineno-0-192">192</a></span>
3409
+<span class="normal"><a href="#__codelineno-0-193">193</a></span>
3410
+<span class="normal"><a href="#__codelineno-0-194">194</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-174" name="__codelineno-0-174"></a><span class="k">def</span> <span class="nf">collect_wazuh_details</span><span class="p">(</span>
3411
+<a id="__codelineno-0-175" name="__codelineno-0-175"></a> <span class="bp">self</span><span class="p">,</span>
3412
+<a id="__codelineno-0-176" name="__codelineno-0-176"></a> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3413
+<a id="__codelineno-0-177" name="__codelineno-0-177"></a><span class="p">)</span> <span class="o">-></span> <span class="n">Tuple</span><span class="p">[</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
3414
+<a id="__codelineno-0-178" name="__codelineno-0-178"></a><span class="w"> </span><span class="sd">"""</span>
3415
+<a id="__codelineno-0-179" name="__codelineno-0-179"></a><span class="sd"> Collects the information of all Wazuh API credentials using the WazuhIndexerConnector class details.</span>
3416
+<a id="__codelineno-0-180" name="__codelineno-0-180"></a>
3417
+<a id="__codelineno-0-181" name="__codelineno-0-181"></a><span class="sd"> Returns:</span>
3418
+<a id="__codelineno-0-182" name="__codelineno-0-182"></a><span class="sd"> tuple: A tuple containing the connection URL, username, and password.</span>
3419
+<a id="__codelineno-0-183" name="__codelineno-0-183"></a><span class="sd"> """</span>
3420
+<a id="__codelineno-0-184" name="__codelineno-0-184"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
3421
+<a id="__codelineno-0-185" name="__codelineno-0-185"></a> <span class="n">connection_successful</span> <span class="o">=</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">()</span>
3422
+<a id="__codelineno-0-186" name="__codelineno-0-186"></a> <span class="k">if</span> <span class="n">connection_successful</span><span class="p">:</span>
3423
+<a id="__codelineno-0-187" name="__codelineno-0-187"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
3424
+<a id="__codelineno-0-188" name="__codelineno-0-188"></a> <span class="k">return</span> <span class="p">(</span>
3425
+<a id="__codelineno-0-189" name="__codelineno-0-189"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_url"</span><span class="p">),</span>
3426
+<a id="__codelineno-0-190" name="__codelineno-0-190"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_username"</span><span class="p">),</span>
3427
+<a id="__codelineno-0-191" name="__codelineno-0-191"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_password"</span><span class="p">),</span>
3428
+<a id="__codelineno-0-192" name="__codelineno-0-192"></a> <span class="p">)</span>
3429
+<a id="__codelineno-0-193" name="__codelineno-0-193"></a> <span class="k">else</span><span class="p">:</span>
3430
+<a id="__codelineno-0-194" name="__codelineno-0-194"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
3431
</code></pre></div></td></tr></table></div>
3432
</details>
3433
</div>
backend/site/alerts/index.html
+236
-236
@@ -589,10 +589,7 @@ available.</p>
589
590
<details class="quote">
591
<summary>Source code in <code>app\routes\alerts.py</code></summary>
592
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-6"> 6</a></span>
593
-<span class="normal"><a href="#__codelineno-0-7"> 7</a></span>
594
-<span class="normal"><a href="#__codelineno-0-8"> 8</a></span>
595
-<span class="normal"><a href="#__codelineno-0-9"> 9</a></span>
592
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-9"> 9</a></span>
593
<span class="normal"><a href="#__codelineno-0-10">10</a></span>
594
<span class="normal"><a href="#__codelineno-0-11">11</a></span>
595
<span class="normal"><a href="#__codelineno-0-12">12</a></span>
@@ -604,22 +601,25 @@ available.</p>
601
<span class="normal"><a href="#__codelineno-0-18">18</a></span>
602
<span class="normal"><a href="#__codelineno-0-19">19</a></span>
603
<span class="normal"><a href="#__codelineno-0-20">20</a></span>
607
-<span class="normal"><a href="#__codelineno-0-21">21</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-6" name="__codelineno-0-6"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/alerts"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
608
-<a id="__codelineno-0-7" name="__codelineno-0-7"></a><span class="k">def</span> <span class="nf">get_alerts</span><span class="p">()</span> <span class="o">-></span> <span class="n">jsonify</span><span class="p">:</span>
609
-<a id="__codelineno-0-8" name="__codelineno-0-8"></a><span class="w"> </span><span class="sd">"""</span>
610
-<a id="__codelineno-0-9" name="__codelineno-0-9"></a><span class="sd"> Retrieves all alerts from the AlertsService.</span>
611
-<a id="__codelineno-0-10" name="__codelineno-0-10"></a>
612
-<a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="sd"> This endpoint retrieves all available alerts from the AlertsService. It does this by creating an instance of</span>
613
-<a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="sd"> the AlertsService class and calling its `collect_alerts` method. The result is a list of all alerts currently</span>
614
-<a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="sd"> available.</span>
615
-<a id="__codelineno-0-14" name="__codelineno-0-14"></a>
616
-<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> Returns:</span>
617
-<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> jsonify: A JSON response containing a list of alerts. Each item in the list is a dictionary representing an alert,</span>
618
-<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> containing all its associated data.</span>
619
-<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> """</span>
620
-<a id="__codelineno-0-19" name="__codelineno-0-19"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AlertsService</span><span class="p">()</span>
621
-<a id="__codelineno-0-20" name="__codelineno-0-20"></a> <span class="n">alerts</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">collect_alerts</span><span class="p">()</span>
622
-<a id="__codelineno-0-21" name="__codelineno-0-21"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">alerts</span><span class="p">)</span>
604
+<span class="normal"><a href="#__codelineno-0-21">21</a></span>
605
+<span class="normal"><a href="#__codelineno-0-22">22</a></span>
606
+<span class="normal"><a href="#__codelineno-0-23">23</a></span>
607
+<span class="normal"><a href="#__codelineno-0-24">24</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-9" name="__codelineno-0-9"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/alerts"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
608
+<a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="k">def</span> <span class="nf">get_alerts</span><span class="p">()</span> <span class="o">-></span> <span class="n">jsonify</span><span class="p">:</span>
609
+<a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="w"> </span><span class="sd">"""</span>
610
+<a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="sd"> Retrieves all alerts from the AlertsService.</span>
611
+<a id="__codelineno-0-13" name="__codelineno-0-13"></a>
612
+<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="sd"> This endpoint retrieves all available alerts from the AlertsService. It does this by creating an instance of</span>
613
+<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> the AlertsService class and calling its `collect_alerts` method. The result is a list of all alerts currently</span>
614
+<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> available.</span>
615
+<a id="__codelineno-0-17" name="__codelineno-0-17"></a>
616
+<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> Returns:</span>
617
+<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> jsonify: A JSON response containing a list of alerts. Each item in the list is a dictionary representing an alert,</span>
618
+<a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> containing all its associated data.</span>
619
+<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> """</span>
620
+<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AlertsService</span><span class="p">()</span>
621
+<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="n">alerts</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">collect_alerts</span><span class="p">()</span>
622
+<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">alerts</span><span class="p">)</span>
623
</code></pre></div></td></tr></table></div>
624
</details>
625
</div>
@@ -729,8 +729,7 @@ available.</p>
729
730
<details class="quote">
731
<summary>Source code in <code>app\services\WazuhIndexer\alerts.py</code></summary>
732
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-8"> 8</a></span>
733
-<span class="normal"><a href="#__codelineno-0-9"> 9</a></span>
732
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-9"> 9</a></span>
733
<span class="normal"><a href="#__codelineno-0-10"> 10</a></span>
734
<span class="normal"><a href="#__codelineno-0-11"> 11</a></span>
735
<span class="normal"><a href="#__codelineno-0-12"> 12</a></span>
@@ -864,142 +863,143 @@ available.</p>
863
<span class="normal"><a href="#__codelineno-0-140">140</a></span>
864
<span class="normal"><a href="#__codelineno-0-141">141</a></span>
865
<span class="normal"><a href="#__codelineno-0-142">142</a></span>
867
-<span class="normal"><a href="#__codelineno-0-143">143</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-8" name="__codelineno-0-8"></a><span class="k">class</span> <span class="nc">AlertsService</span><span class="p">:</span>
868
-<a id="__codelineno-0-9" name="__codelineno-0-9"></a><span class="w"> </span><span class="sd">"""</span>
869
-<a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="sd"> A service class that encapsulates the logic for pulling alerts from the Wazuh-Indexer.</span>
870
-<a id="__codelineno-0-11" name="__codelineno-0-11"></a>
871
-<a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="sd"> Attributes:</span>
872
-<a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="sd"> connector_url (str): The url to the Wazuh-Indexer.</span>
873
-<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="sd"> connector_username (str): The username for the Wazuh-Indexer.</span>
874
-<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> connector_password (str): The password for the Wazuh-Indexer.</span>
875
-<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> es (Elasticsearch): The Elasticsearch client.</span>
876
-<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> """</span>
877
-<a id="__codelineno-0-18" name="__codelineno-0-18"></a>
878
-<a id="__codelineno-0-19" name="__codelineno-0-19"></a> <span class="n">SKIP_INDEX_NAMES</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
879
-<a id="__codelineno-0-20" name="__codelineno-0-20"></a> <span class="s2">"wazuh-statistics"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
880
-<a id="__codelineno-0-21" name="__codelineno-0-21"></a> <span class="s2">"wazuh-monitoring"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
881
-<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="p">}</span>
882
-<a id="__codelineno-0-23" name="__codelineno-0-23"></a>
883
-<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
884
-<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="w"> </span><span class="sd">"""</span>
885
-<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="sd"> Initializes the service by collecting Wazuh-Indexer details and creating an Elasticsearch client.</span>
886
-<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> """</span>
887
-<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="p">(</span>
888
-<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
889
-<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
890
-<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
891
-<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="p">)</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span><span class="o">.</span><span class="n">collect_wazuhindexer_details</span><span class="p">(</span><span class="s2">"Wazuh-Indexer"</span><span class="p">)</span>
892
-<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="bp">self</span><span class="o">.</span><span class="n">es</span> <span class="o">=</span> <span class="n">Elasticsearch</span><span class="p">(</span>
893
-<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">],</span>
894
-<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="n">http_auth</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">),</span>
895
-<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="n">verify_certs</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
896
-<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">timeout</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span>
897
-<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="n">max_retries</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
898
-<a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="n">retry_on_timeout</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
899
-<a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="p">)</span>
900
-<a id="__codelineno-0-41" name="__codelineno-0-41"></a>
901
-<a id="__codelineno-0-42" name="__codelineno-0-42"></a> <span class="k">def</span> <span class="nf">is_index_skipped</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
902
-<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="w"> </span><span class="sd">"""</span>
903
-<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> Checks whether the given index name should be skipped.</span>
904
-<a id="__codelineno-0-45" name="__codelineno-0-45"></a>
905
-<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> Args:</span>
906
-<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> index_name (str): The name of the index.</span>
907
-<a id="__codelineno-0-48" name="__codelineno-0-48"></a>
908
-<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="sd"> Returns:</span>
909
-<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="sd"> bool: True if the index should be skipped, False otherwise.</span>
910
-<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> """</span>
911
-<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">for</span> <span class="n">skipped</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SKIP_INDEX_NAMES</span><span class="p">:</span>
912
-<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="k">if</span> <span class="n">index_name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">skipped</span><span class="p">):</span>
913
-<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="k">return</span> <span class="kc">True</span>
914
-<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="k">return</span> <span class="kc">False</span>
915
-<a id="__codelineno-0-56" name="__codelineno-0-56"></a>
916
-<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="k">def</span> <span class="nf">collect_alerts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">object</span><span class="p">]:</span>
917
-<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="w"> </span><span class="sd">"""</span>
918
-<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="sd"> Collects the alerts from the Wazuh-Indexer where the index name starts with "wazuh_"</span>
919
-<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="sd"> and is not in the SKIP_INDEX_NAMES list.</span>
920
-<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> Returns the 10 previous alerts based on the `timestamp_utc` field.</span>
921
-<a id="__codelineno-0-62" name="__codelineno-0-62"></a>
922
-<a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> Returns:</span>
923
-<a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="sd"> Dict[str, object]: A dictionary containing success status and alerts or an error message.</span>
924
-<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="sd"> """</span>
925
-<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">(</span>
926
-<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">],</span>
927
-<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="p">):</span>
928
-<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="k">return</span> <span class="p">{</span>
929
-<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Wazuh-Indexer details"</span><span class="p">,</span>
930
-<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
931
-<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="p">}</span>
932
-<a id="__codelineno-0-73" name="__codelineno-0-73"></a>
933
-<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="n">indices_list</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span><span class="o">.</span><span class="n">collect_indices</span><span class="p">()</span>
934
-<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">indices_list</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
935
-<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect indices"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
936
-<a id="__codelineno-0-77" name="__codelineno-0-77"></a>
937
-<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="n">alerts_summary</span> <span class="o">=</span> <span class="p">[]</span>
938
-<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="k">for</span> <span class="n">index_name</span> <span class="ow">in</span> <span class="n">indices_list</span><span class="p">[</span><span class="s2">"indices_list"</span><span class="p">]:</span>
939
-<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">index_name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"wazuh_"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_index_skipped</span><span class="p">(</span><span class="n">index_name</span><span class="p">):</span>
940
-<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="k">continue</span>
941
-<a id="__codelineno-0-82" name="__codelineno-0-82"></a>
942
-<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="n">alerts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_alerts</span><span class="p">(</span><span class="n">index_name</span><span class="p">)</span>
943
-<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="k">if</span> <span class="n">alerts</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">alerts</span><span class="p">[</span><span class="s2">"alerts"</span><span class="p">])</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
944
-<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="n">alerts_summary</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
945
-<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="p">{</span>
946
-<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="s2">"index_name"</span><span class="p">:</span> <span class="n">index_name</span><span class="p">,</span>
947
-<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="s2">"total_alerts"</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">alerts</span><span class="p">[</span><span class="s2">"alerts"</span><span class="p">]),</span>
948
-<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="s2">"last_10_alerts"</span><span class="p">:</span> <span class="n">alerts</span><span class="p">[</span><span class="s2">"alerts"</span><span class="p">],</span>
949
-<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="p">},</span>
950
-<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="p">)</span>
951
-<a id="__codelineno-0-92" name="__codelineno-0-92"></a>
952
-<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="k">return</span> <span class="p">{</span>
953
-<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully collected alerts"</span><span class="p">,</span>
954
-<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
955
-<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="s2">"alerts_summary"</span><span class="p">:</span> <span class="n">alerts_summary</span><span class="p">,</span>
956
-<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="p">}</span>
957
-<a id="__codelineno-0-98" name="__codelineno-0-98"></a>
958
-<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="k">def</span> <span class="nf">_collect_alerts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">object</span><span class="p">]:</span>
959
-<a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="w"> </span><span class="sd">"""</span>
960
-<a id="__codelineno-0-101" name="__codelineno-0-101"></a><span class="sd"> Elasticsearch query to get the 10 most recent alerts where the `rule_level` is 12 or higher or the</span>
961
-<a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="sd"> `syslog_level` field is `ALERT` and return the results in descending order by the `timestamp_utc` field.</span>
962
-<a id="__codelineno-0-103" name="__codelineno-0-103"></a>
963
-<a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="sd"> Args:</span>
964
-<a id="__codelineno-0-105" name="__codelineno-0-105"></a><span class="sd"> index_name (str): The name of the index to query.</span>
965
-<a id="__codelineno-0-106" name="__codelineno-0-106"></a>
966
-<a id="__codelineno-0-107" name="__codelineno-0-107"></a><span class="sd"> Returns:</span>
967
-<a id="__codelineno-0-108" name="__codelineno-0-108"></a><span class="sd"> Dict[str, object]: A dictionary containing success status and alerts or an error message.</span>
968
-<a id="__codelineno-0-109" name="__codelineno-0-109"></a><span class="sd"> """</span>
969
-<a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Collecting alerts from </span><span class="si">{</span><span class="n">index_name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
970
-<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_build_query</span><span class="p">()</span>
971
-<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="k">try</span><span class="p">:</span>
972
-<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="n">alerts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">es</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">index</span><span class="o">=</span><span class="n">index_name</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">query</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
973
-<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="n">alerts_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">alert</span> <span class="k">for</span> <span class="n">alert</span> <span class="ow">in</span> <span class="n">alerts</span><span class="p">[</span><span class="s2">"hits"</span><span class="p">][</span><span class="s2">"hits"</span><span class="p">]]</span>
974
-<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="k">return</span> <span class="p">{</span>
975
-<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully collected alerts"</span><span class="p">,</span>
976
-<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
977
-<a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="s2">"alerts"</span><span class="p">:</span> <span class="n">alerts_list</span><span class="p">,</span>
978
-<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="p">}</span>
979
-<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
980
-<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect alerts: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
981
-<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect alerts"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
982
-<a id="__codelineno-0-123" name="__codelineno-0-123"></a>
983
-<a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="nd">@staticmethod</span>
984
-<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="k">def</span> <span class="nf">_build_query</span><span class="p">()</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">object</span><span class="p">]:</span>
985
-<a id="__codelineno-0-126" name="__codelineno-0-126"></a><span class="w"> </span><span class="sd">"""</span>
986
-<a id="__codelineno-0-127" name="__codelineno-0-127"></a><span class="sd"> Builds the Elasticsearch query to get the 10 most recent alerts where the `rule_level` is 12 or higher or</span>
987
-<a id="__codelineno-0-128" name="__codelineno-0-128"></a><span class="sd"> the `syslog_level` field is `ALERT`.</span>
988
-<a id="__codelineno-0-129" name="__codelineno-0-129"></a>
989
-<a id="__codelineno-0-130" name="__codelineno-0-130"></a><span class="sd"> Returns:</span>
990
-<a id="__codelineno-0-131" name="__codelineno-0-131"></a><span class="sd"> Dict[str, object]: A dictionary representing the Elasticsearch query.</span>
991
-<a id="__codelineno-0-132" name="__codelineno-0-132"></a><span class="sd"> """</span>
992
-<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="k">return</span> <span class="p">{</span>
993
-<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="s2">"query"</span><span class="p">:</span> <span class="p">{</span>
994
-<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="s2">"bool"</span><span class="p">:</span> <span class="p">{</span>
995
-<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="s2">"should"</span><span class="p">:</span> <span class="p">[</span>
996
-<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="p">{</span><span class="s2">"range"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"rule_level"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"gte"</span><span class="p">:</span> <span class="mi">12</span><span class="p">}}},</span>
997
-<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="p">{</span><span class="s2">"match"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"syslog_level"</span><span class="p">:</span> <span class="s2">"ALERT"</span><span class="p">}},</span>
998
-<a id="__codelineno-0-139" name="__codelineno-0-139"></a> <span class="p">],</span>
999
-<a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="p">},</span>
1000
-<a id="__codelineno-0-141" name="__codelineno-0-141"></a> <span class="p">},</span>
1001
-<a id="__codelineno-0-142" name="__codelineno-0-142"></a> <span class="s2">"sort"</span><span class="p">:</span> <span class="p">[{</span><span class="s2">"timestamp_utc"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"order"</span><span class="p">:</span> <span class="s2">"desc"</span><span class="p">}}],</span>
1002
-<a id="__codelineno-0-143" name="__codelineno-0-143"></a> <span class="p">}</span>
866
+<span class="normal"><a href="#__codelineno-0-143">143</a></span>
867
+<span class="normal"><a href="#__codelineno-0-144">144</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-9" name="__codelineno-0-9"></a><span class="k">class</span> <span class="nc">AlertsService</span><span class="p">:</span>
868
+<a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="w"> </span><span class="sd">"""</span>
869
+<a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="sd"> A service class that encapsulates the logic for pulling alerts from the Wazuh-Indexer.</span>
870
+<a id="__codelineno-0-12" name="__codelineno-0-12"></a>
871
+<a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="sd"> Attributes:</span>
872
+<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="sd"> connector_url (str): The url to the Wazuh-Indexer.</span>
873
+<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> connector_username (str): The username for the Wazuh-Indexer.</span>
874
+<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> connector_password (str): The password for the Wazuh-Indexer.</span>
875
+<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> es (Elasticsearch): The Elasticsearch client.</span>
876
+<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> """</span>
877
+<a id="__codelineno-0-19" name="__codelineno-0-19"></a>
878
+<a id="__codelineno-0-20" name="__codelineno-0-20"></a> <span class="n">SKIP_INDEX_NAMES</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
879
+<a id="__codelineno-0-21" name="__codelineno-0-21"></a> <span class="s2">"wazuh-statistics"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
880
+<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="s2">"wazuh-monitoring"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
881
+<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="p">}</span>
882
+<a id="__codelineno-0-24" name="__codelineno-0-24"></a>
883
+<a id="__codelineno-0-25" name="__codelineno-0-25"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
884
+<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="w"> </span><span class="sd">"""</span>
885
+<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> Initializes the service by collecting Wazuh-Indexer details and creating an Elasticsearch client.</span>
886
+<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> """</span>
887
+<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="p">(</span>
888
+<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
889
+<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
890
+<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
891
+<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="p">)</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span><span class="o">.</span><span class="n">collect_wazuhindexer_details</span><span class="p">(</span><span class="s2">"Wazuh-Indexer"</span><span class="p">)</span>
892
+<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="bp">self</span><span class="o">.</span><span class="n">es</span> <span class="o">=</span> <span class="n">Elasticsearch</span><span class="p">(</span>
893
+<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">],</span>
894
+<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="n">http_auth</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">),</span>
895
+<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">verify_certs</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
896
+<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="n">timeout</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span>
897
+<a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="n">max_retries</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
898
+<a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="n">retry_on_timeout</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
899
+<a id="__codelineno-0-41" name="__codelineno-0-41"></a> <span class="p">)</span>
900
+<a id="__codelineno-0-42" name="__codelineno-0-42"></a>
901
+<a id="__codelineno-0-43" name="__codelineno-0-43"></a> <span class="k">def</span> <span class="nf">is_index_skipped</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
902
+<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="w"> </span><span class="sd">"""</span>
903
+<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> Checks whether the given index name should be skipped.</span>
904
+<a id="__codelineno-0-46" name="__codelineno-0-46"></a>
905
+<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> Args:</span>
906
+<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="sd"> index_name (str): The name of the index.</span>
907
+<a id="__codelineno-0-49" name="__codelineno-0-49"></a>
908
+<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="sd"> Returns:</span>
909
+<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> bool: True if the index should be skipped, False otherwise.</span>
910
+<a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="sd"> """</span>
911
+<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="k">for</span> <span class="n">skipped</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SKIP_INDEX_NAMES</span><span class="p">:</span>
912
+<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="k">if</span> <span class="n">index_name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">skipped</span><span class="p">):</span>
913
+<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="k">return</span> <span class="kc">True</span>
914
+<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="k">return</span> <span class="kc">False</span>
915
+<a id="__codelineno-0-57" name="__codelineno-0-57"></a>
916
+<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="k">def</span> <span class="nf">collect_alerts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">object</span><span class="p">]:</span>
917
+<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="w"> </span><span class="sd">"""</span>
918
+<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="sd"> Collects the alerts from the Wazuh-Indexer where the index name starts with "wazuh_"</span>
919
+<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> and is not in the SKIP_INDEX_NAMES list.</span>
920
+<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> Returns the 10 previous alerts based on the `timestamp_utc` field.</span>
921
+<a id="__codelineno-0-63" name="__codelineno-0-63"></a>
922
+<a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="sd"> Returns:</span>
923
+<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="sd"> Dict[str, object]: A dictionary containing success status and alerts or an error message.</span>
924
+<a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="sd"> """</span>
925
+<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">(</span>
926
+<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">],</span>
927
+<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="p">):</span>
928
+<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="k">return</span> <span class="p">{</span>
929
+<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Wazuh-Indexer details"</span><span class="p">,</span>
930
+<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
931
+<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="p">}</span>
932
+<a id="__codelineno-0-74" name="__codelineno-0-74"></a>
933
+<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="n">indices_list</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span><span class="o">.</span><span class="n">collect_indices</span><span class="p">()</span>
934
+<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">indices_list</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
935
+<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect indices"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
936
+<a id="__codelineno-0-78" name="__codelineno-0-78"></a>
937
+<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="n">alerts_summary</span> <span class="o">=</span> <span class="p">[]</span>
938
+<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">for</span> <span class="n">index_name</span> <span class="ow">in</span> <span class="n">indices_list</span><span class="p">[</span><span class="s2">"indices_list"</span><span class="p">]:</span>
939
+<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">index_name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"wazuh_"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_index_skipped</span><span class="p">(</span><span class="n">index_name</span><span class="p">):</span>
940
+<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="k">continue</span>
941
+<a id="__codelineno-0-83" name="__codelineno-0-83"></a>
942
+<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="n">alerts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_alerts</span><span class="p">(</span><span class="n">index_name</span><span class="p">)</span>
943
+<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="k">if</span> <span class="n">alerts</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">alerts</span><span class="p">[</span><span class="s2">"alerts"</span><span class="p">])</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
944
+<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="n">alerts_summary</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
945
+<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="p">{</span>
946
+<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="s2">"index_name"</span><span class="p">:</span> <span class="n">index_name</span><span class="p">,</span>
947
+<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="s2">"total_alerts"</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">alerts</span><span class="p">[</span><span class="s2">"alerts"</span><span class="p">]),</span>
948
+<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="s2">"last_10_alerts"</span><span class="p">:</span> <span class="n">alerts</span><span class="p">[</span><span class="s2">"alerts"</span><span class="p">],</span>
949
+<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="p">},</span>
950
+<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="p">)</span>
951
+<a id="__codelineno-0-93" name="__codelineno-0-93"></a>
952
+<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="k">return</span> <span class="p">{</span>
953
+<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully collected alerts"</span><span class="p">,</span>
954
+<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
955
+<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="s2">"alerts_summary"</span><span class="p">:</span> <span class="n">alerts_summary</span><span class="p">,</span>
956
+<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="p">}</span>
957
+<a id="__codelineno-0-99" name="__codelineno-0-99"></a>
958
+<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="k">def</span> <span class="nf">_collect_alerts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">object</span><span class="p">]:</span>
959
+<a id="__codelineno-0-101" name="__codelineno-0-101"></a><span class="w"> </span><span class="sd">"""</span>
960
+<a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="sd"> Elasticsearch query to get the 10 most recent alerts where the `rule_level` is 12 or higher or the</span>
961
+<a id="__codelineno-0-103" name="__codelineno-0-103"></a><span class="sd"> `syslog_level` field is `ALERT` and return the results in descending order by the `timestamp_utc` field.</span>
962
+<a id="__codelineno-0-104" name="__codelineno-0-104"></a>
963
+<a id="__codelineno-0-105" name="__codelineno-0-105"></a><span class="sd"> Args:</span>
964
+<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> index_name (str): The name of the index to query.</span>
965
+<a id="__codelineno-0-107" name="__codelineno-0-107"></a>
966
+<a id="__codelineno-0-108" name="__codelineno-0-108"></a><span class="sd"> Returns:</span>
967
+<a id="__codelineno-0-109" name="__codelineno-0-109"></a><span class="sd"> Dict[str, object]: A dictionary containing success status and alerts or an error message.</span>
968
+<a id="__codelineno-0-110" name="__codelineno-0-110"></a><span class="sd"> """</span>
969
+<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Collecting alerts from </span><span class="si">{</span><span class="n">index_name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
970
+<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_build_query</span><span class="p">()</span>
971
+<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="k">try</span><span class="p">:</span>
972
+<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="n">alerts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">es</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">index</span><span class="o">=</span><span class="n">index_name</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">query</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
973
+<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="n">alerts_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">alert</span> <span class="k">for</span> <span class="n">alert</span> <span class="ow">in</span> <span class="n">alerts</span><span class="p">[</span><span class="s2">"hits"</span><span class="p">][</span><span class="s2">"hits"</span><span class="p">]]</span>
974
+<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="k">return</span> <span class="p">{</span>
975
+<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully collected alerts"</span><span class="p">,</span>
976
+<a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
977
+<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="s2">"alerts"</span><span class="p">:</span> <span class="n">alerts_list</span><span class="p">,</span>
978
+<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="p">}</span>
979
+<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
980
+<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect alerts: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
981
+<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect alerts"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
982
+<a id="__codelineno-0-124" name="__codelineno-0-124"></a>
983
+<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="nd">@staticmethod</span>
984
+<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="k">def</span> <span class="nf">_build_query</span><span class="p">()</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">object</span><span class="p">]:</span>
985
+<a id="__codelineno-0-127" name="__codelineno-0-127"></a><span class="w"> </span><span class="sd">"""</span>
986
+<a id="__codelineno-0-128" name="__codelineno-0-128"></a><span class="sd"> Builds the Elasticsearch query to get the 10 most recent alerts where the `rule_level` is 12 or higher or</span>
987
+<a id="__codelineno-0-129" name="__codelineno-0-129"></a><span class="sd"> the `syslog_level` field is `ALERT`.</span>
988
+<a id="__codelineno-0-130" name="__codelineno-0-130"></a>
989
+<a id="__codelineno-0-131" name="__codelineno-0-131"></a><span class="sd"> Returns:</span>
990
+<a id="__codelineno-0-132" name="__codelineno-0-132"></a><span class="sd"> Dict[str, object]: A dictionary representing the Elasticsearch query.</span>
991
+<a id="__codelineno-0-133" name="__codelineno-0-133"></a><span class="sd"> """</span>
992
+<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="k">return</span> <span class="p">{</span>
993
+<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="s2">"query"</span><span class="p">:</span> <span class="p">{</span>
994
+<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="s2">"bool"</span><span class="p">:</span> <span class="p">{</span>
995
+<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="s2">"should"</span><span class="p">:</span> <span class="p">[</span>
996
+<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="p">{</span><span class="s2">"range"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"rule_level"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"gte"</span><span class="p">:</span> <span class="mi">12</span><span class="p">}}},</span>
997
+<a id="__codelineno-0-139" name="__codelineno-0-139"></a> <span class="p">{</span><span class="s2">"match"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"syslog_level"</span><span class="p">:</span> <span class="s2">"ALERT"</span><span class="p">}},</span>
998
+<a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="p">],</span>
999
+<a id="__codelineno-0-141" name="__codelineno-0-141"></a> <span class="p">},</span>
1000
+<a id="__codelineno-0-142" name="__codelineno-0-142"></a> <span class="p">},</span>
1001
+<a id="__codelineno-0-143" name="__codelineno-0-143"></a> <span class="s2">"sort"</span><span class="p">:</span> <span class="p">[{</span><span class="s2">"timestamp_utc"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"order"</span><span class="p">:</span> <span class="s2">"desc"</span><span class="p">}}],</span>
1002
+<a id="__codelineno-0-144" name="__codelineno-0-144"></a> <span class="p">}</span>
1003
</code></pre></div></td></tr></table></div>
1004
</details>
1005
@@ -1031,8 +1031,7 @@ available.</p>
1031
1032
<details class="quote">
1033
<summary>Source code in <code>app\services\WazuhIndexer\alerts.py</code></summary>
1034
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-24">24</a></span>
1035
-<span class="normal"><a href="#__codelineno-0-25">25</a></span>
1034
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-25">25</a></span>
1035
<span class="normal"><a href="#__codelineno-0-26">26</a></span>
1036
<span class="normal"><a href="#__codelineno-0-27">27</a></span>
1037
<span class="normal"><a href="#__codelineno-0-28">28</a></span>
@@ -1047,23 +1046,24 @@ available.</p>
1046
<span class="normal"><a href="#__codelineno-0-37">37</a></span>
1047
<span class="normal"><a href="#__codelineno-0-38">38</a></span>
1048
<span class="normal"><a href="#__codelineno-0-39">39</a></span>
1050
-<span class="normal"><a href="#__codelineno-0-40">40</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1051
-<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="w"> </span><span class="sd">"""</span>
1052
-<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="sd"> Initializes the service by collecting Wazuh-Indexer details and creating an Elasticsearch client.</span>
1053
-<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> """</span>
1054
-<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="p">(</span>
1055
-<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
1056
-<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
1057
-<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
1058
-<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="p">)</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span><span class="o">.</span><span class="n">collect_wazuhindexer_details</span><span class="p">(</span><span class="s2">"Wazuh-Indexer"</span><span class="p">)</span>
1059
-<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="bp">self</span><span class="o">.</span><span class="n">es</span> <span class="o">=</span> <span class="n">Elasticsearch</span><span class="p">(</span>
1060
-<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">],</span>
1061
-<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="n">http_auth</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">),</span>
1062
-<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="n">verify_certs</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
1063
-<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">timeout</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span>
1064
-<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="n">max_retries</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
1065
-<a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="n">retry_on_timeout</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
1066
-<a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="p">)</span>
1049
+<span class="normal"><a href="#__codelineno-0-40">40</a></span>
1050
+<span class="normal"><a href="#__codelineno-0-41">41</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1051
+<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="w"> </span><span class="sd">"""</span>
1052
+<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> Initializes the service by collecting Wazuh-Indexer details and creating an Elasticsearch client.</span>
1053
+<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> """</span>
1054
+<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="p">(</span>
1055
+<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
1056
+<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
1057
+<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
1058
+<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="p">)</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span><span class="o">.</span><span class="n">collect_wazuhindexer_details</span><span class="p">(</span><span class="s2">"Wazuh-Indexer"</span><span class="p">)</span>
1059
+<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="bp">self</span><span class="o">.</span><span class="n">es</span> <span class="o">=</span> <span class="n">Elasticsearch</span><span class="p">(</span>
1060
+<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">],</span>
1061
+<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="n">http_auth</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">),</span>
1062
+<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">verify_certs</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
1063
+<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="n">timeout</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span>
1064
+<a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="n">max_retries</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
1065
+<a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="n">retry_on_timeout</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
1066
+<a id="__codelineno-0-41" name="__codelineno-0-41"></a> <span class="p">)</span>
1067
</code></pre></div></td></tr></table></div>
1068
</details>
1069
</div>
@@ -1110,8 +1110,7 @@ Returns the 10 previous alerts based on the <code>timestamp_utc</code> field.</p
1110
1111
<details class="quote">
1112
<summary>Source code in <code>app\services\WazuhIndexer\alerts.py</code></summary>
1113
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-57">57</a></span>
1114
-<span class="normal"><a href="#__codelineno-0-58">58</a></span>
1113
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-58">58</a></span>
1114
<span class="normal"><a href="#__codelineno-0-59">59</a></span>
1115
<span class="normal"><a href="#__codelineno-0-60">60</a></span>
1116
<span class="normal"><a href="#__codelineno-0-61">61</a></span>
@@ -1150,47 +1149,48 @@ Returns the 10 previous alerts based on the <code>timestamp_utc</code> field.</p
1149
<span class="normal"><a href="#__codelineno-0-94">94</a></span>
1150
<span class="normal"><a href="#__codelineno-0-95">95</a></span>
1151
<span class="normal"><a href="#__codelineno-0-96">96</a></span>
1153
-<span class="normal"><a href="#__codelineno-0-97">97</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="k">def</span> <span class="nf">collect_alerts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">object</span><span class="p">]:</span>
1154
-<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="w"> </span><span class="sd">"""</span>
1155
-<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="sd"> Collects the alerts from the Wazuh-Indexer where the index name starts with "wazuh_"</span>
1156
-<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="sd"> and is not in the SKIP_INDEX_NAMES list.</span>
1157
-<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> Returns the 10 previous alerts based on the `timestamp_utc` field.</span>
1158
-<a id="__codelineno-0-62" name="__codelineno-0-62"></a>
1159
-<a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> Returns:</span>
1160
-<a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="sd"> Dict[str, object]: A dictionary containing success status and alerts or an error message.</span>
1161
-<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="sd"> """</span>
1162
-<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">(</span>
1163
-<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">],</span>
1164
-<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="p">):</span>
1165
-<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="k">return</span> <span class="p">{</span>
1166
-<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Wazuh-Indexer details"</span><span class="p">,</span>
1167
-<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
1168
-<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="p">}</span>
1169
-<a id="__codelineno-0-73" name="__codelineno-0-73"></a>
1170
-<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="n">indices_list</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span><span class="o">.</span><span class="n">collect_indices</span><span class="p">()</span>
1171
-<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">indices_list</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
1172
-<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect indices"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
1173
-<a id="__codelineno-0-77" name="__codelineno-0-77"></a>
1174
-<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="n">alerts_summary</span> <span class="o">=</span> <span class="p">[]</span>
1175
-<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="k">for</span> <span class="n">index_name</span> <span class="ow">in</span> <span class="n">indices_list</span><span class="p">[</span><span class="s2">"indices_list"</span><span class="p">]:</span>
1176
-<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">index_name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"wazuh_"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_index_skipped</span><span class="p">(</span><span class="n">index_name</span><span class="p">):</span>
1177
-<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="k">continue</span>
1178
-<a id="__codelineno-0-82" name="__codelineno-0-82"></a>
1179
-<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="n">alerts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_alerts</span><span class="p">(</span><span class="n">index_name</span><span class="p">)</span>
1180
-<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="k">if</span> <span class="n">alerts</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">alerts</span><span class="p">[</span><span class="s2">"alerts"</span><span class="p">])</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
1181
-<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="n">alerts_summary</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
1182
-<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="p">{</span>
1183
-<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="s2">"index_name"</span><span class="p">:</span> <span class="n">index_name</span><span class="p">,</span>
1184
-<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="s2">"total_alerts"</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">alerts</span><span class="p">[</span><span class="s2">"alerts"</span><span class="p">]),</span>
1185
-<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="s2">"last_10_alerts"</span><span class="p">:</span> <span class="n">alerts</span><span class="p">[</span><span class="s2">"alerts"</span><span class="p">],</span>
1186
-<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="p">},</span>
1187
-<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="p">)</span>
1188
-<a id="__codelineno-0-92" name="__codelineno-0-92"></a>
1189
-<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="k">return</span> <span class="p">{</span>
1190
-<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully collected alerts"</span><span class="p">,</span>
1191
-<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
1192
-<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="s2">"alerts_summary"</span><span class="p">:</span> <span class="n">alerts_summary</span><span class="p">,</span>
1193
-<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="p">}</span>
1152
+<span class="normal"><a href="#__codelineno-0-97">97</a></span>
1153
+<span class="normal"><a href="#__codelineno-0-98">98</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="k">def</span> <span class="nf">collect_alerts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">object</span><span class="p">]:</span>
1154
+<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="w"> </span><span class="sd">"""</span>
1155
+<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="sd"> Collects the alerts from the Wazuh-Indexer where the index name starts with "wazuh_"</span>
1156
+<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> and is not in the SKIP_INDEX_NAMES list.</span>
1157
+<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> Returns the 10 previous alerts based on the `timestamp_utc` field.</span>
1158
+<a id="__codelineno-0-63" name="__codelineno-0-63"></a>
1159
+<a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="sd"> Returns:</span>
1160
+<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="sd"> Dict[str, object]: A dictionary containing success status and alerts or an error message.</span>
1161
+<a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="sd"> """</span>
1162
+<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">(</span>
1163
+<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">],</span>
1164
+<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="p">):</span>
1165
+<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="k">return</span> <span class="p">{</span>
1166
+<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Wazuh-Indexer details"</span><span class="p">,</span>
1167
+<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
1168
+<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="p">}</span>
1169
+<a id="__codelineno-0-74" name="__codelineno-0-74"></a>
1170
+<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="n">indices_list</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span><span class="o">.</span><span class="n">collect_indices</span><span class="p">()</span>
1171
+<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">indices_list</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
1172
+<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect indices"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
1173
+<a id="__codelineno-0-78" name="__codelineno-0-78"></a>
1174
+<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="n">alerts_summary</span> <span class="o">=</span> <span class="p">[]</span>
1175
+<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">for</span> <span class="n">index_name</span> <span class="ow">in</span> <span class="n">indices_list</span><span class="p">[</span><span class="s2">"indices_list"</span><span class="p">]:</span>
1176
+<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">index_name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"wazuh_"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_index_skipped</span><span class="p">(</span><span class="n">index_name</span><span class="p">):</span>
1177
+<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="k">continue</span>
1178
+<a id="__codelineno-0-83" name="__codelineno-0-83"></a>
1179
+<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="n">alerts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_alerts</span><span class="p">(</span><span class="n">index_name</span><span class="p">)</span>
1180
+<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="k">if</span> <span class="n">alerts</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">alerts</span><span class="p">[</span><span class="s2">"alerts"</span><span class="p">])</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
1181
+<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="n">alerts_summary</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
1182
+<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="p">{</span>
1183
+<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="s2">"index_name"</span><span class="p">:</span> <span class="n">index_name</span><span class="p">,</span>
1184
+<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="s2">"total_alerts"</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">alerts</span><span class="p">[</span><span class="s2">"alerts"</span><span class="p">]),</span>
1185
+<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="s2">"last_10_alerts"</span><span class="p">:</span> <span class="n">alerts</span><span class="p">[</span><span class="s2">"alerts"</span><span class="p">],</span>
1186
+<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="p">},</span>
1187
+<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="p">)</span>
1188
+<a id="__codelineno-0-93" name="__codelineno-0-93"></a>
1189
+<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="k">return</span> <span class="p">{</span>
1190
+<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully collected alerts"</span><span class="p">,</span>
1191
+<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
1192
+<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="s2">"alerts_summary"</span><span class="p">:</span> <span class="n">alerts_summary</span><span class="p">,</span>
1193
+<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="p">}</span>
1194
</code></pre></div></td></tr></table></div>
1195
</details>
1196
</div>
@@ -1263,8 +1263,7 @@ Returns the 10 previous alerts based on the <code>timestamp_utc</code> field.</p
1263
1264
<details class="quote">
1265
<summary>Source code in <code>app\services\WazuhIndexer\alerts.py</code></summary>
1266
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-42">42</a></span>
1267
-<span class="normal"><a href="#__codelineno-0-43">43</a></span>
1266
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-43">43</a></span>
1267
<span class="normal"><a href="#__codelineno-0-44">44</a></span>
1268
<span class="normal"><a href="#__codelineno-0-45">45</a></span>
1269
<span class="normal"><a href="#__codelineno-0-46">46</a></span>
@@ -1276,20 +1275,21 @@ Returns the 10 previous alerts based on the <code>timestamp_utc</code> field.</p
1275
<span class="normal"><a href="#__codelineno-0-52">52</a></span>
1276
<span class="normal"><a href="#__codelineno-0-53">53</a></span>
1277
<span class="normal"><a href="#__codelineno-0-54">54</a></span>
1279
-<span class="normal"><a href="#__codelineno-0-55">55</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="k">def</span> <span class="nf">is_index_skipped</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
1280
-<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="w"> </span><span class="sd">"""</span>
1281
-<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> Checks whether the given index name should be skipped.</span>
1282
-<a id="__codelineno-0-45" name="__codelineno-0-45"></a>
1283
-<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> Args:</span>
1284
-<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> index_name (str): The name of the index.</span>
1285
-<a id="__codelineno-0-48" name="__codelineno-0-48"></a>
1286
-<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="sd"> Returns:</span>
1287
-<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="sd"> bool: True if the index should be skipped, False otherwise.</span>
1288
-<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> """</span>
1289
-<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">for</span> <span class="n">skipped</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SKIP_INDEX_NAMES</span><span class="p">:</span>
1290
-<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="k">if</span> <span class="n">index_name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">skipped</span><span class="p">):</span>
1291
-<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="k">return</span> <span class="kc">True</span>
1292
-<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="k">return</span> <span class="kc">False</span>
1278
+<span class="normal"><a href="#__codelineno-0-55">55</a></span>
1279
+<span class="normal"><a href="#__codelineno-0-56">56</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="k">def</span> <span class="nf">is_index_skipped</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
1280
+<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="w"> </span><span class="sd">"""</span>
1281
+<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> Checks whether the given index name should be skipped.</span>
1282
+<a id="__codelineno-0-46" name="__codelineno-0-46"></a>
1283
+<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> Args:</span>
1284
+<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="sd"> index_name (str): The name of the index.</span>
1285
+<a id="__codelineno-0-49" name="__codelineno-0-49"></a>
1286
+<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="sd"> Returns:</span>
1287
+<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> bool: True if the index should be skipped, False otherwise.</span>
1288
+<a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="sd"> """</span>
1289
+<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="k">for</span> <span class="n">skipped</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SKIP_INDEX_NAMES</span><span class="p">:</span>
1290
+<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="k">if</span> <span class="n">index_name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">skipped</span><span class="p">):</span>
1291
+<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="k">return</span> <span class="kc">True</span>
1292
+<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="k">return</span> <span class="kc">False</span>
1293
</code></pre></div></td></tr></table></div>
1294
</details>
1295
</div>
backend/site/artifacts/index.html
+362
-362
@@ -1038,12 +1038,7 @@ It collects the artifact name and client name from the request body and returns
1038
1039
<details class="quote">
1040
<summary>Source code in <code>app\routes\velociraptor.py</code></summary>
1041
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-69"> 69</a></span>
1042
-<span class="normal"><a href="#__codelineno-0-70"> 70</a></span>
1043
-<span class="normal"><a href="#__codelineno-0-71"> 71</a></span>
1044
-<span class="normal"><a href="#__codelineno-0-72"> 72</a></span>
1045
-<span class="normal"><a href="#__codelineno-0-73"> 73</a></span>
1046
-<span class="normal"><a href="#__codelineno-0-74"> 74</a></span>
1041
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-74"> 74</a></span>
1042
<span class="normal"><a href="#__codelineno-0-75"> 75</a></span>
1043
<span class="normal"><a href="#__codelineno-0-76"> 76</a></span>
1044
<span class="normal"><a href="#__codelineno-0-77"> 77</a></span>
@@ -1071,40 +1066,45 @@ It collects the artifact name and client name from the request body and returns
1066
<span class="normal"><a href="#__codelineno-0-99"> 99</a></span>
1067
<span class="normal"><a href="#__codelineno-0-100">100</a></span>
1068
<span class="normal"><a href="#__codelineno-0-101">101</a></span>
1074
-<span class="normal"><a href="#__codelineno-0-102">102</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/velociraptor/artifacts/collection"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</span><span class="p">])</span>
1075
-<a id="__codelineno-0-70" name="__codelineno-0-70"></a><span class="k">def</span> <span class="nf">collect_artifact</span><span class="p">():</span>
1076
-<a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="w"> </span><span class="sd">"""</span>
1077
-<a id="__codelineno-0-72" name="__codelineno-0-72"></a><span class="sd"> Endpoint to collect an artifact.</span>
1078
-<a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="sd"> It collects the artifact name and client name from the request body and returns the results.</span>
1079
-<a id="__codelineno-0-74" name="__codelineno-0-74"></a>
1080
-<a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="sd"> Returns:</span>
1081
-<a id="__codelineno-0-76" name="__codelineno-0-76"></a><span class="sd"> json: A JSON response containing the result of the artifact collection operation.</span>
1082
-<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> """</span>
1083
-<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="n">req_data</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">get_json</span><span class="p">()</span>
1084
-<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="n">artifact_name</span> <span class="o">=</span> <span class="n">req_data</span><span class="p">[</span><span class="s2">"artifact_name"</span><span class="p">]</span>
1085
-<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="n">client_name</span> <span class="o">=</span> <span class="n">req_data</span><span class="p">[</span><span class="s2">"client_name"</span><span class="p">]</span>
1086
-<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span>
1087
-<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="n">client_id</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">get_client_id</span><span class="p">(</span><span class="n">client_name</span><span class="o">=</span><span class="n">client_name</span><span class="p">)[</span><span class="s2">"results"</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span>
1088
-<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="s2">"client_id"</span>
1089
-<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="p">]</span>
1090
-<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="k">if</span> <span class="n">client_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
1091
-<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="k">return</span> <span class="p">(</span>
1092
-<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="n">jsonify</span><span class="p">(</span>
1093
-<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="p">{</span>
1094
-<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">client_name</span><span class="si">}</span><span class="s2"> has not been seen in the last 30 seconds and may not be online with the "</span>
1095
-<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="s2">"Velociraptor server."</span><span class="p">,</span>
1096
-<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
1097
-<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="p">},</span>
1098
-<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="p">),</span>
1099
-<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="mi">500</span><span class="p">,</span>
1100
-<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="p">)</span>
1101
-<a id="__codelineno-0-96" name="__codelineno-0-96"></a>
1102
-<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="n">artifact_service</span> <span class="o">=</span> <span class="n">ArtifactsService</span><span class="p">()</span>
1103
-<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="n">artifact_results</span> <span class="o">=</span> <span class="n">artifact_service</span><span class="o">.</span><span class="n">run_artifact_collection</span><span class="p">(</span>
1104
-<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="n">client_id</span><span class="o">=</span><span class="n">client_id</span><span class="p">,</span>
1105
-<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="n">artifact</span><span class="o">=</span><span class="n">artifact_name</span><span class="p">,</span>
1106
-<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="p">)</span>
1107
-<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="k">return</span> <span class="n">artifact_results</span>
1069
+<span class="normal"><a href="#__codelineno-0-102">102</a></span>
1070
+<span class="normal"><a href="#__codelineno-0-103">103</a></span>
1071
+<span class="normal"><a href="#__codelineno-0-104">104</a></span>
1072
+<span class="normal"><a href="#__codelineno-0-105">105</a></span>
1073
+<span class="normal"><a href="#__codelineno-0-106">106</a></span>
1074
+<span class="normal"><a href="#__codelineno-0-107">107</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/velociraptor/artifacts/collection"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</span><span class="p">])</span>
1075
+<a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="k">def</span> <span class="nf">collect_artifact</span><span class="p">():</span>
1076
+<a id="__codelineno-0-76" name="__codelineno-0-76"></a><span class="w"> </span><span class="sd">"""</span>
1077
+<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> Endpoint to collect an artifact.</span>
1078
+<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="sd"> It collects the artifact name and client name from the request body and returns the results.</span>
1079
+<a id="__codelineno-0-79" name="__codelineno-0-79"></a>
1080
+<a id="__codelineno-0-80" name="__codelineno-0-80"></a><span class="sd"> Returns:</span>
1081
+<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> json: A JSON response containing the result of the artifact collection operation.</span>
1082
+<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="sd"> """</span>
1083
+<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="n">req_data</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">get_json</span><span class="p">()</span>
1084
+<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="n">artifact_name</span> <span class="o">=</span> <span class="n">req_data</span><span class="p">[</span><span class="s2">"artifact_name"</span><span class="p">]</span>
1085
+<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="n">client_name</span> <span class="o">=</span> <span class="n">req_data</span><span class="p">[</span><span class="s2">"client_name"</span><span class="p">]</span>
1086
+<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span>
1087
+<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="n">client_id</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">get_client_id</span><span class="p">(</span><span class="n">client_name</span><span class="o">=</span><span class="n">client_name</span><span class="p">)[</span><span class="s2">"results"</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span>
1088
+<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="s2">"client_id"</span>
1089
+<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="p">]</span>
1090
+<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="k">if</span> <span class="n">client_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
1091
+<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="k">return</span> <span class="p">(</span>
1092
+<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="n">jsonify</span><span class="p">(</span>
1093
+<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="p">{</span>
1094
+<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">client_name</span><span class="si">}</span><span class="s2"> has not been seen in the last 30 seconds and may not be online with the "</span>
1095
+<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="s2">"Velociraptor server."</span><span class="p">,</span>
1096
+<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
1097
+<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="p">},</span>
1098
+<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="p">),</span>
1099
+<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="mi">500</span><span class="p">,</span>
1100
+<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="p">)</span>
1101
+<a id="__codelineno-0-101" name="__codelineno-0-101"></a>
1102
+<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="n">artifact_service</span> <span class="o">=</span> <span class="n">ArtifactsService</span><span class="p">()</span>
1103
+<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="n">artifact_results</span> <span class="o">=</span> <span class="n">artifact_service</span><span class="o">.</span><span class="n">run_artifact_collection</span><span class="p">(</span>
1104
+<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="n">client_id</span><span class="o">=</span><span class="n">client_id</span><span class="p">,</span>
1105
+<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="n">artifact</span><span class="o">=</span><span class="n">artifact_name</span><span class="p">,</span>
1106
+<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="p">)</span>
1107
+<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="k">return</span> <span class="n">artifact_results</span>
1108
</code></pre></div></td></tr></table></div>
1109
</details>
1110
</div>
@@ -1158,8 +1158,7 @@ It processes each artifact to verify the connection and returns the results.</p>
1158
1159
<details class="quote">
1160
<summary>Source code in <code>app\routes\velociraptor.py</code></summary>
1161
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-10">10</a></span>
1162
-<span class="normal"><a href="#__codelineno-0-11">11</a></span>
1161
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-11">11</a></span>
1162
<span class="normal"><a href="#__codelineno-0-12">12</a></span>
1163
<span class="normal"><a href="#__codelineno-0-13">13</a></span>
1164
<span class="normal"><a href="#__codelineno-0-14">14</a></span>
@@ -1170,19 +1169,20 @@ It processes each artifact to verify the connection and returns the results.</p>
1169
<span class="normal"><a href="#__codelineno-0-19">19</a></span>
1170
<span class="normal"><a href="#__codelineno-0-20">20</a></span>
1171
<span class="normal"><a href="#__codelineno-0-21">21</a></span>
1173
-<span class="normal"><a href="#__codelineno-0-22">22</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/velociraptor/artifacts"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1174
-<a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="k">def</span> <span class="nf">get_artifacts</span><span class="p">():</span>
1175
-<a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="w"> </span><span class="sd">"""</span>
1176
-<a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="sd"> Endpoint to list all available artifacts.</span>
1177
-<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="sd"> It processes each artifact to verify the connection and returns the results.</span>
1178
-<a id="__codelineno-0-15" name="__codelineno-0-15"></a>
1179
-<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> Returns:</span>
1180
-<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> json: A JSON response containing the list of all available artifacts along with their connection verification</span>
1181
-<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> status.</span>
1182
-<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> """</span>
1183
-<a id="__codelineno-0-20" name="__codelineno-0-20"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">ArtifactsService</span><span class="p">()</span>
1184
-<a id="__codelineno-0-21" name="__codelineno-0-21"></a> <span class="n">artifacts</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">collect_artifacts</span><span class="p">()</span>
1185
-<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="k">return</span> <span class="n">artifacts</span>
1172
+<span class="normal"><a href="#__codelineno-0-22">22</a></span>
1173
+<span class="normal"><a href="#__codelineno-0-23">23</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/velociraptor/artifacts"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1174
+<a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="k">def</span> <span class="nf">get_artifacts</span><span class="p">():</span>
1175
+<a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="w"> </span><span class="sd">"""</span>
1176
+<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="sd"> Endpoint to list all available artifacts.</span>
1177
+<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> It processes each artifact to verify the connection and returns the results.</span>
1178
+<a id="__codelineno-0-16" name="__codelineno-0-16"></a>
1179
+<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> Returns:</span>
1180
+<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> json: A JSON response containing the list of all available artifacts along with their connection verification</span>
1181
+<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> status.</span>
1182
+<a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> """</span>
1183
+<a id="__codelineno-0-21" name="__codelineno-0-21"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">ArtifactsService</span><span class="p">()</span>
1184
+<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="n">artifacts</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">collect_artifacts</span><span class="p">()</span>
1185
+<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="k">return</span> <span class="n">artifacts</span>
1186
</code></pre></div></td></tr></table></div>
1187
</details>
1188
</div>
@@ -1237,9 +1237,7 @@ begins with <code>Linux</code>.</p>
1237
1238
<details class="quote">
1239
<summary>Source code in <code>app\routes\velociraptor.py</code></summary>
1240
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-24">24</a></span>
1241
-<span class="normal"><a href="#__codelineno-0-25">25</a></span>
1242
-<span class="normal"><a href="#__codelineno-0-26">26</a></span>
1240
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-26">26</a></span>
1241
<span class="normal"><a href="#__codelineno-0-27">27</a></span>
1242
<span class="normal"><a href="#__codelineno-0-28">28</a></span>
1243
<span class="normal"><a href="#__codelineno-0-29">29</a></span>
@@ -1250,20 +1248,22 @@ begins with <code>Linux</code>.</p>
1248
<span class="normal"><a href="#__codelineno-0-34">34</a></span>
1249
<span class="normal"><a href="#__codelineno-0-35">35</a></span>
1250
<span class="normal"><a href="#__codelineno-0-36">36</a></span>
1253
-<span class="normal"><a href="#__codelineno-0-37">37</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/velociraptor/artifacts/linux"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1254
-<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="k">def</span> <span class="nf">get_artifacts_linux</span><span class="p">():</span>
1255
-<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="w"> </span><span class="sd">"""</span>
1256
-<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> Endpoint to list all available Linux artifacts.</span>
1257
-<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> It processes each artifact to verify the connection and returns the results where the name</span>
1258
-<a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="sd"> begins with `Linux`.</span>
1259
-<a id="__codelineno-0-30" name="__codelineno-0-30"></a>
1260
-<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> Returns:</span>
1261
-<a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="sd"> json: A JSON response containing the list of all available Linux artifacts along with their connection verification</span>
1262
-<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="sd"> status.</span>
1263
-<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> """</span>
1264
-<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">ArtifactsService</span><span class="p">()</span>
1265
-<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="n">linux_artifacts</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">collect_artifacts_linux</span><span class="p">()</span>
1266
-<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="k">return</span> <span class="n">linux_artifacts</span>
1251
+<span class="normal"><a href="#__codelineno-0-37">37</a></span>
1252
+<span class="normal"><a href="#__codelineno-0-38">38</a></span>
1253
+<span class="normal"><a href="#__codelineno-0-39">39</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/velociraptor/artifacts/linux"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1254
+<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="k">def</span> <span class="nf">get_artifacts_linux</span><span class="p">():</span>
1255
+<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="w"> </span><span class="sd">"""</span>
1256
+<a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="sd"> Endpoint to list all available Linux artifacts.</span>
1257
+<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> It processes each artifact to verify the connection and returns the results where the name</span>
1258
+<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> begins with `Linux`.</span>
1259
+<a id="__codelineno-0-32" name="__codelineno-0-32"></a>
1260
+<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="sd"> Returns:</span>
1261
+<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> json: A JSON response containing the list of all available Linux artifacts along with their connection verification</span>
1262
+<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> status.</span>
1263
+<a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="sd"> """</span>
1264
+<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">ArtifactsService</span><span class="p">()</span>
1265
+<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="n">linux_artifacts</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">collect_artifacts_linux</span><span class="p">()</span>
1266
+<a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="k">return</span> <span class="n">linux_artifacts</span>
1267
</code></pre></div></td></tr></table></div>
1268
</details>
1269
</div>
@@ -1318,11 +1318,7 @@ begins with <code>MacOS</code>.</p>
1318
1319
<details class="quote">
1320
<summary>Source code in <code>app\routes\velociraptor.py</code></summary>
1321
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-54">54</a></span>
1322
-<span class="normal"><a href="#__codelineno-0-55">55</a></span>
1323
-<span class="normal"><a href="#__codelineno-0-56">56</a></span>
1324
-<span class="normal"><a href="#__codelineno-0-57">57</a></span>
1325
-<span class="normal"><a href="#__codelineno-0-58">58</a></span>
1321
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-58">58</a></span>
1322
<span class="normal"><a href="#__codelineno-0-59">59</a></span>
1323
<span class="normal"><a href="#__codelineno-0-60">60</a></span>
1324
<span class="normal"><a href="#__codelineno-0-61">61</a></span>
@@ -1331,20 +1327,24 @@ begins with <code>MacOS</code>.</p>
1327
<span class="normal"><a href="#__codelineno-0-64">64</a></span>
1328
<span class="normal"><a href="#__codelineno-0-65">65</a></span>
1329
<span class="normal"><a href="#__codelineno-0-66">66</a></span>
1334
-<span class="normal"><a href="#__codelineno-0-67">67</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/velociraptor/artifacts/mac"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1335
-<a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="k">def</span> <span class="nf">get_artifacts_mac</span><span class="p">():</span>
1336
-<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="w"> </span><span class="sd">"""</span>
1337
-<a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="sd"> Endpoint to list all available MacOS artifacts.</span>
1338
-<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> It processes each artifact to verify the connection and returns the results where the name</span>
1339
-<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="sd"> begins with `MacOS`.</span>
1340
-<a id="__codelineno-0-60" name="__codelineno-0-60"></a>
1341
-<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> Returns:</span>
1342
-<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> json: A JSON response containing the list of all available MacOS artifacts along with their connection verification</span>
1343
-<a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> status.</span>
1344
-<a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="sd"> """</span>
1345
-<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">ArtifactsService</span><span class="p">()</span>
1346
-<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="n">mac_artifacts</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">collect_artifacts_macos</span><span class="p">()</span>
1347
-<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="k">return</span> <span class="n">mac_artifacts</span>
1330
+<span class="normal"><a href="#__codelineno-0-67">67</a></span>
1331
+<span class="normal"><a href="#__codelineno-0-68">68</a></span>
1332
+<span class="normal"><a href="#__codelineno-0-69">69</a></span>
1333
+<span class="normal"><a href="#__codelineno-0-70">70</a></span>
1334
+<span class="normal"><a href="#__codelineno-0-71">71</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/velociraptor/artifacts/mac"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1335
+<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="k">def</span> <span class="nf">get_artifacts_mac</span><span class="p">():</span>
1336
+<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="w"> </span><span class="sd">"""</span>
1337
+<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> Endpoint to list all available MacOS artifacts.</span>
1338
+<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> It processes each artifact to verify the connection and returns the results where the name</span>
1339
+<a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> begins with `MacOS`.</span>
1340
+<a id="__codelineno-0-64" name="__codelineno-0-64"></a>
1341
+<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="sd"> Returns:</span>
1342
+<a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="sd"> json: A JSON response containing the list of all available MacOS artifacts along with their connection verification</span>
1343
+<a id="__codelineno-0-67" name="__codelineno-0-67"></a><span class="sd"> status.</span>
1344
+<a id="__codelineno-0-68" name="__codelineno-0-68"></a><span class="sd"> """</span>
1345
+<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">ArtifactsService</span><span class="p">()</span>
1346
+<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="n">mac_artifacts</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">collect_artifacts_macos</span><span class="p">()</span>
1347
+<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="k">return</span> <span class="n">mac_artifacts</span>
1348
</code></pre></div></td></tr></table></div>
1349
</details>
1350
</div>
@@ -1399,10 +1399,7 @@ begins with <code>Windows</code>.</p>
1399
1400
<details class="quote">
1401
<summary>Source code in <code>app\routes\velociraptor.py</code></summary>
1402
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-39">39</a></span>
1403
-<span class="normal"><a href="#__codelineno-0-40">40</a></span>
1404
-<span class="normal"><a href="#__codelineno-0-41">41</a></span>
1405
-<span class="normal"><a href="#__codelineno-0-42">42</a></span>
1402
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-42">42</a></span>
1403
<span class="normal"><a href="#__codelineno-0-43">43</a></span>
1404
<span class="normal"><a href="#__codelineno-0-44">44</a></span>
1405
<span class="normal"><a href="#__codelineno-0-45">45</a></span>
@@ -1412,20 +1409,23 @@ begins with <code>Windows</code>.</p>
1409
<span class="normal"><a href="#__codelineno-0-49">49</a></span>
1410
<span class="normal"><a href="#__codelineno-0-50">50</a></span>
1411
<span class="normal"><a href="#__codelineno-0-51">51</a></span>
1415
-<span class="normal"><a href="#__codelineno-0-52">52</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/velociraptor/artifacts/windows"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1416
-<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="k">def</span> <span class="nf">get_artifacts_windows</span><span class="p">():</span>
1417
-<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="w"> </span><span class="sd">"""</span>
1418
-<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> Endpoint to list all available Windows artifacts.</span>
1419
-<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> It processes each artifact to verify the connection and returns the results where the name</span>
1420
-<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> begins with `Windows`.</span>
1421
-<a id="__codelineno-0-45" name="__codelineno-0-45"></a>
1422
-<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> Returns:</span>
1423
-<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> json: A JSON response containing the list of all available Windows artifacts along with their connection verification</span>
1424
-<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="sd"> status.</span>
1425
-<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="sd"> """</span>
1426
-<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">ArtifactsService</span><span class="p">()</span>
1427
-<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="n">windows_artifacts</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">collect_artifacts_windows</span><span class="p">()</span>
1428
-<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">return</span> <span class="n">windows_artifacts</span>
1412
+<span class="normal"><a href="#__codelineno-0-52">52</a></span>
1413
+<span class="normal"><a href="#__codelineno-0-53">53</a></span>
1414
+<span class="normal"><a href="#__codelineno-0-54">54</a></span>
1415
+<span class="normal"><a href="#__codelineno-0-55">55</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/velociraptor/artifacts/windows"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1416
+<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="k">def</span> <span class="nf">get_artifacts_windows</span><span class="p">():</span>
1417
+<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="w"> </span><span class="sd">"""</span>
1418
+<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> Endpoint to list all available Windows artifacts.</span>
1419
+<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> It processes each artifact to verify the connection and returns the results where the name</span>
1420
+<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> begins with `Windows`.</span>
1421
+<a id="__codelineno-0-48" name="__codelineno-0-48"></a>
1422
+<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="sd"> Returns:</span>
1423
+<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="sd"> json: A JSON response containing the list of all available Windows artifacts along with their connection verification</span>
1424
+<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> status.</span>
1425
+<a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="sd"> """</span>
1426
+<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">ArtifactsService</span><span class="p">()</span>
1427
+<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="n">windows_artifacts</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">collect_artifacts_windows</span><span class="p">()</span>
1428
+<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="k">return</span> <span class="n">windows_artifacts</span>
1429
</code></pre></div></td></tr></table></div>
1430
</details>
1431
</div>
@@ -1478,9 +1478,7 @@ begins with <code>Windows</code>.</p>
1478
1479
<details class="quote">
1480
<summary>Source code in <code>app\services\Velociraptor\artifacts.py</code></summary>
1481
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-4"> 4</a></span>
1482
-<span class="normal"><a href="#__codelineno-0-5"> 5</a></span>
1483
-<span class="normal"><a href="#__codelineno-0-6"> 6</a></span>
1481
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-6"> 6</a></span>
1482
<span class="normal"><a href="#__codelineno-0-7"> 7</a></span>
1483
<span class="normal"><a href="#__codelineno-0-8"> 8</a></span>
1484
<span class="normal"><a href="#__codelineno-0-9"> 9</a></span>
@@ -1610,139 +1608,141 @@ begins with <code>Windows</code>.</p>
1608
<span class="normal"><a href="#__codelineno-0-133">133</a></span>
1609
<span class="normal"><a href="#__codelineno-0-134">134</a></span>
1610
<span class="normal"><a href="#__codelineno-0-135">135</a></span>
1613
-<span class="normal"><a href="#__codelineno-0-136">136</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-4" name="__codelineno-0-4"></a><span class="k">class</span> <span class="nc">ArtifactsService</span><span class="p">:</span>
1614
-<a id="__codelineno-0-5" name="__codelineno-0-5"></a><span class="w"> </span><span class="sd">"""</span>
1615
-<a id="__codelineno-0-6" name="__codelineno-0-6"></a><span class="sd"> A service class that encapsulates the logic for pulling artifacts from Velociraptor.</span>
1616
-<a id="__codelineno-0-7" name="__codelineno-0-7"></a><span class="sd"> """</span>
1617
-<a id="__codelineno-0-8" name="__codelineno-0-8"></a>
1618
-<a id="__codelineno-0-9" name="__codelineno-0-9"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1619
-<a id="__codelineno-0-10" name="__codelineno-0-10"></a> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span>
1620
-<a id="__codelineno-0-11" name="__codelineno-0-11"></a>
1621
-<a id="__codelineno-0-12" name="__codelineno-0-12"></a> <span class="k">def</span> <span class="nf">_create_query</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">query</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
1622
-<a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="w"> </span><span class="sd">"""</span>
1623
-<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="sd"> Create a query string.</span>
1624
-<a id="__codelineno-0-15" name="__codelineno-0-15"></a>
1625
-<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> Args:</span>
1626
-<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> query (str): The query to be executed.</span>
1627
-<a id="__codelineno-0-18" name="__codelineno-0-18"></a>
1628
-<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> Returns:</span>
1629
-<a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> str: The created query string.</span>
1630
-<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> """</span>
1631
-<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="k">return</span> <span class="n">query</span>
1632
-<a id="__codelineno-0-23" name="__codelineno-0-23"></a>
1633
-<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="k">def</span> <span class="nf">_get_artifact_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">client_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">artifact</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
1634
-<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="w"> </span><span class="sd">"""</span>
1635
-<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="sd"> Construct the artifact key.</span>
1636
-<a id="__codelineno-0-27" name="__codelineno-0-27"></a>
1637
-<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> Args:</span>
1638
-<a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="sd"> client_id (str): The ID of the client.</span>
1639
-<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> artifact (str): The name of the artifact.</span>
1640
-<a id="__codelineno-0-31" name="__codelineno-0-31"></a>
1641
-<a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="sd"> Returns:</span>
1642
-<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="sd"> str: The constructed artifact key.</span>
1643
-<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> """</span>
1644
-<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"collect_client(client_id='</span><span class="si">{</span><span class="n">client_id</span><span class="si">}</span><span class="s2">', artifacts=['</span><span class="si">{</span><span class="n">artifact</span><span class="si">}</span><span class="s2">'])"</span>
1645
-<a id="__codelineno-0-36" name="__codelineno-0-36"></a>
1646
-<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="k">def</span> <span class="nf">collect_artifacts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1647
-<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="w"> </span><span class="sd">"""</span>
1648
-<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> Collect the artifacts from Velociraptor.</span>
1649
-<a id="__codelineno-0-40" name="__codelineno-0-40"></a>
1650
-<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> Returns:</span>
1651
-<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1652
-<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> """</span>
1653
-<a id="__codelineno-0-44" name="__codelineno-0-44"></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_create_query</span><span class="p">(</span><span class="s2">"SELECT name FROM artifact_definitions()"</span><span class="p">)</span>
1654
-<a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">execute_query</span><span class="p">(</span><span class="n">query</span><span class="p">)</span>
1655
-<a id="__codelineno-0-46" name="__codelineno-0-46"></a>
1656
-<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="k">def</span> <span class="nf">collect_artifacts_prefixed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1657
-<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="w"> </span><span class="sd">"""</span>
1658
-<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with a specific prefix.</span>
1659
-<a id="__codelineno-0-50" name="__codelineno-0-50"></a>
1660
-<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> Args:</span>
1661
-<a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="sd"> prefix (str): The prefix to filter the artifacts.</span>
1662
-<a id="__codelineno-0-53" name="__codelineno-0-53"></a>
1663
-<a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="sd"> Returns:</span>
1664
-<a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1665
-<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> """</span>
1666
-<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="n">artifacts_response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts</span><span class="p">()</span>
1667
-<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">artifacts_response</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
1668
-<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="k">return</span> <span class="n">artifacts_response</span>
1669
-<a id="__codelineno-0-60" name="__codelineno-0-60"></a>
1670
-<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="n">filtered_artifacts</span> <span class="o">=</span> <span class="p">[</span>
1671
-<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="n">artifact</span>
1672
-<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="k">for</span> <span class="n">artifact</span> <span class="ow">in</span> <span class="n">artifacts_response</span><span class="p">[</span><span class="s2">"results"</span><span class="p">]</span>
1673
-<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="k">if</span> <span class="n">artifact</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span>
1674
-<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="p">]</span>
1675
-<a id="__codelineno-0-66" name="__codelineno-0-66"></a>
1676
-<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="k">return</span> <span class="p">{</span>
1677
-<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
1678
-<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Successfully collected </span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> artifacts"</span><span class="p">,</span>
1679
-<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="s2">"artifacts"</span><span class="p">:</span> <span class="n">filtered_artifacts</span><span class="p">,</span>
1680
-<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="p">}</span>
1681
-<a id="__codelineno-0-72" name="__codelineno-0-72"></a>
1682
-<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="k">def</span> <span class="nf">collect_artifacts_linux</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1683
-<a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="w"> </span><span class="sd">"""</span>
1684
-<a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with `Linux`.</span>
1685
-<a id="__codelineno-0-76" name="__codelineno-0-76"></a>
1686
-<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> Returns:</span>
1687
-<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1688
-<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> """</span>
1689
-<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts_prefixed</span><span class="p">(</span><span class="s2">"Linux."</span><span class="p">)</span>
1690
-<a id="__codelineno-0-81" name="__codelineno-0-81"></a>
1691
-<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="k">def</span> <span class="nf">collect_artifacts_windows</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1692
-<a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="w"> </span><span class="sd">"""</span>
1693
-<a id="__codelineno-0-84" name="__codelineno-0-84"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with `Windows`.</span>
1694
-<a id="__codelineno-0-85" name="__codelineno-0-85"></a>
1695
-<a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="sd"> Returns:</span>
1696
-<a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1697
-<a id="__codelineno-0-88" name="__codelineno-0-88"></a><span class="sd"> """</span>
1698
-<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts_prefixed</span><span class="p">(</span><span class="s2">"Windows."</span><span class="p">)</span>
1699
-<a id="__codelineno-0-90" name="__codelineno-0-90"></a>
1700
-<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="k">def</span> <span class="nf">collect_artifacts_macos</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1701
-<a id="__codelineno-0-92" name="__codelineno-0-92"></a><span class="w"> </span><span class="sd">"""</span>
1702
-<a id="__codelineno-0-93" name="__codelineno-0-93"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with `MacOS`.</span>
1703
-<a id="__codelineno-0-94" name="__codelineno-0-94"></a>
1704
-<a id="__codelineno-0-95" name="__codelineno-0-95"></a><span class="sd"> Returns:</span>
1705
-<a id="__codelineno-0-96" name="__codelineno-0-96"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1706
-<a id="__codelineno-0-97" name="__codelineno-0-97"></a><span class="sd"> """</span>
1707
-<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts_prefixed</span><span class="p">(</span><span class="s2">"MacOS."</span><span class="p">)</span>
1708
-<a id="__codelineno-0-99" name="__codelineno-0-99"></a>
1709
-<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="k">def</span> <span class="nf">run_artifact_collection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">client_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">artifact</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1710
-<a id="__codelineno-0-101" name="__codelineno-0-101"></a><span class="w"> </span><span class="sd">"""</span>
1711
-<a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="sd"> Run an artifact collection on a specific client.</span>
1712
-<a id="__codelineno-0-103" name="__codelineno-0-103"></a>
1713
-<a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="sd"> Args:</span>
1714
-<a id="__codelineno-0-105" name="__codelineno-0-105"></a><span class="sd"> client_id (str): The ID of the client.</span>
1715
-<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> artifact (str): The name of the artifact.</span>
1716
-<a id="__codelineno-0-107" name="__codelineno-0-107"></a>
1717
-<a id="__codelineno-0-108" name="__codelineno-0-108"></a><span class="sd"> Returns:</span>
1718
-<a id="__codelineno-0-109" name="__codelineno-0-109"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the results.</span>
1719
-<a id="__codelineno-0-110" name="__codelineno-0-110"></a><span class="sd"> """</span>
1720
-<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="k">try</span><span class="p">:</span>
1721
-<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_create_query</span><span class="p">(</span>
1722
-<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="sa">f</span><span class="s2">"SELECT collect_client(client_id='</span><span class="si">{</span><span class="n">client_id</span><span class="si">}</span><span class="s2">', artifacts=['</span><span class="si">{</span><span class="n">artifact</span><span class="si">}</span><span class="s2">']) FROM scope()"</span><span class="p">,</span>
1723
-<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="p">)</span>
1724
-<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="n">flow</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">execute_query</span><span class="p">(</span><span class="n">query</span><span class="p">)</span>
1725
-<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Successfully ran artifact collection on </span><span class="si">{</span><span class="n">flow</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
1726
-<a id="__codelineno-0-117" name="__codelineno-0-117"></a>
1727
-<a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="n">artifact_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_artifact_key</span><span class="p">(</span><span class="n">client_id</span><span class="p">,</span> <span class="n">artifact</span><span class="p">)</span>
1728
-<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="n">flow_id</span> <span class="o">=</span> <span class="n">flow</span><span class="p">[</span><span class="s2">"results"</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="n">artifact_key</span><span class="p">][</span><span class="s2">"flow_id"</span><span class="p">]</span>
1729
-<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Successfully ran artifact collection on </span><span class="si">{</span><span class="n">flow_id</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
1730
-<a id="__codelineno-0-121" name="__codelineno-0-121"></a>
1731
-<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="n">completed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">watch_flow_completion</span><span class="p">(</span><span class="n">flow_id</span><span class="p">)</span>
1732
-<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Successfully watched flow completion on </span><span class="si">{</span><span class="n">completed</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
1733
-<a id="__codelineno-0-124" name="__codelineno-0-124"></a>
1734
-<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="n">results</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">read_collection_results</span><span class="p">(</span>
1735
-<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="n">client_id</span><span class="p">,</span>
1736
-<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="n">flow_id</span><span class="p">,</span>
1737
-<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="n">artifact</span><span class="p">,</span>
1738
-<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="p">)</span>
1739
-<a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="k">return</span> <span class="n">results</span>
1740
-<a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
1741
-<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to run artifact collection: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
1742
-<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="k">return</span> <span class="p">{</span>
1743
-<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to run artifact collection"</span><span class="p">,</span>
1744
-<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
1745
-<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="p">}</span>
1611
+<span class="normal"><a href="#__codelineno-0-136">136</a></span>
1612
+<span class="normal"><a href="#__codelineno-0-137">137</a></span>
1613
+<span class="normal"><a href="#__codelineno-0-138">138</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-6" name="__codelineno-0-6"></a><span class="k">class</span> <span class="nc">ArtifactsService</span><span class="p">:</span>
1614
+<a id="__codelineno-0-7" name="__codelineno-0-7"></a><span class="w"> </span><span class="sd">"""</span>
1615
+<a id="__codelineno-0-8" name="__codelineno-0-8"></a><span class="sd"> A service class that encapsulates the logic for pulling artifacts from Velociraptor.</span>
1616
+<a id="__codelineno-0-9" name="__codelineno-0-9"></a><span class="sd"> """</span>
1617
+<a id="__codelineno-0-10" name="__codelineno-0-10"></a>
1618
+<a id="__codelineno-0-11" name="__codelineno-0-11"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1619
+<a id="__codelineno-0-12" name="__codelineno-0-12"></a> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span>
1620
+<a id="__codelineno-0-13" name="__codelineno-0-13"></a>
1621
+<a id="__codelineno-0-14" name="__codelineno-0-14"></a> <span class="k">def</span> <span class="nf">_create_query</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">query</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
1622
+<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="w"> </span><span class="sd">"""</span>
1623
+<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> Create a query string.</span>
1624
+<a id="__codelineno-0-17" name="__codelineno-0-17"></a>
1625
+<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> Args:</span>
1626
+<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> query (str): The query to be executed.</span>
1627
+<a id="__codelineno-0-20" name="__codelineno-0-20"></a>
1628
+<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> Returns:</span>
1629
+<a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="sd"> str: The created query string.</span>
1630
+<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="sd"> """</span>
1631
+<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="k">return</span> <span class="n">query</span>
1632
+<a id="__codelineno-0-25" name="__codelineno-0-25"></a>
1633
+<a id="__codelineno-0-26" name="__codelineno-0-26"></a> <span class="k">def</span> <span class="nf">_get_artifact_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">client_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">artifact</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
1634
+<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="w"> </span><span class="sd">"""</span>
1635
+<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> Construct the artifact key.</span>
1636
+<a id="__codelineno-0-29" name="__codelineno-0-29"></a>
1637
+<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> Args:</span>
1638
+<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> client_id (str): The ID of the client.</span>
1639
+<a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="sd"> artifact (str): The name of the artifact.</span>
1640
+<a id="__codelineno-0-33" name="__codelineno-0-33"></a>
1641
+<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> Returns:</span>
1642
+<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> str: The constructed artifact key.</span>
1643
+<a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="sd"> """</span>
1644
+<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"collect_client(client_id='</span><span class="si">{</span><span class="n">client_id</span><span class="si">}</span><span class="s2">', artifacts=['</span><span class="si">{</span><span class="n">artifact</span><span class="si">}</span><span class="s2">'])"</span>
1645
+<a id="__codelineno-0-38" name="__codelineno-0-38"></a>
1646
+<a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="k">def</span> <span class="nf">collect_artifacts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1647
+<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="w"> </span><span class="sd">"""</span>
1648
+<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> Collect the artifacts from Velociraptor.</span>
1649
+<a id="__codelineno-0-42" name="__codelineno-0-42"></a>
1650
+<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> Returns:</span>
1651
+<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1652
+<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> """</span>
1653
+<a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_create_query</span><span class="p">(</span><span class="s2">"SELECT name FROM artifact_definitions()"</span><span class="p">)</span>
1654
+<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">execute_query</span><span class="p">(</span><span class="n">query</span><span class="p">)</span>
1655
+<a id="__codelineno-0-48" name="__codelineno-0-48"></a>
1656
+<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">def</span> <span class="nf">collect_artifacts_prefixed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1657
+<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="w"> </span><span class="sd">"""</span>
1658
+<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with a specific prefix.</span>
1659
+<a id="__codelineno-0-52" name="__codelineno-0-52"></a>
1660
+<a id="__codelineno-0-53" name="__codelineno-0-53"></a><span class="sd"> Args:</span>
1661
+<a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="sd"> prefix (str): The prefix to filter the artifacts.</span>
1662
+<a id="__codelineno-0-55" name="__codelineno-0-55"></a>
1663
+<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> Returns:</span>
1664
+<a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1665
+<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> """</span>
1666
+<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="n">artifacts_response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts</span><span class="p">()</span>
1667
+<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">artifacts_response</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
1668
+<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="k">return</span> <span class="n">artifacts_response</span>
1669
+<a id="__codelineno-0-62" name="__codelineno-0-62"></a>
1670
+<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="n">filtered_artifacts</span> <span class="o">=</span> <span class="p">[</span>
1671
+<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="n">artifact</span>
1672
+<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="k">for</span> <span class="n">artifact</span> <span class="ow">in</span> <span class="n">artifacts_response</span><span class="p">[</span><span class="s2">"results"</span><span class="p">]</span>
1673
+<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">if</span> <span class="n">artifact</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span>
1674
+<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="p">]</span>
1675
+<a id="__codelineno-0-68" name="__codelineno-0-68"></a>
1676
+<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="k">return</span> <span class="p">{</span>
1677
+<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
1678
+<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Successfully collected </span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> artifacts"</span><span class="p">,</span>
1679
+<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="s2">"artifacts"</span><span class="p">:</span> <span class="n">filtered_artifacts</span><span class="p">,</span>
1680
+<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="p">}</span>
1681
+<a id="__codelineno-0-74" name="__codelineno-0-74"></a>
1682
+<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="k">def</span> <span class="nf">collect_artifacts_linux</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1683
+<a id="__codelineno-0-76" name="__codelineno-0-76"></a><span class="w"> </span><span class="sd">"""</span>
1684
+<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with `Linux`.</span>
1685
+<a id="__codelineno-0-78" name="__codelineno-0-78"></a>
1686
+<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> Returns:</span>
1687
+<a id="__codelineno-0-80" name="__codelineno-0-80"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1688
+<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> """</span>
1689
+<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts_prefixed</span><span class="p">(</span><span class="s2">"Linux."</span><span class="p">)</span>
1690
+<a id="__codelineno-0-83" name="__codelineno-0-83"></a>
1691
+<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="k">def</span> <span class="nf">collect_artifacts_windows</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1692
+<a id="__codelineno-0-85" name="__codelineno-0-85"></a><span class="w"> </span><span class="sd">"""</span>
1693
+<a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with `Windows`.</span>
1694
+<a id="__codelineno-0-87" name="__codelineno-0-87"></a>
1695
+<a id="__codelineno-0-88" name="__codelineno-0-88"></a><span class="sd"> Returns:</span>
1696
+<a id="__codelineno-0-89" name="__codelineno-0-89"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1697
+<a id="__codelineno-0-90" name="__codelineno-0-90"></a><span class="sd"> """</span>
1698
+<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts_prefixed</span><span class="p">(</span><span class="s2">"Windows."</span><span class="p">)</span>
1699
+<a id="__codelineno-0-92" name="__codelineno-0-92"></a>
1700
+<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="k">def</span> <span class="nf">collect_artifacts_macos</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1701
+<a id="__codelineno-0-94" name="__codelineno-0-94"></a><span class="w"> </span><span class="sd">"""</span>
1702
+<a id="__codelineno-0-95" name="__codelineno-0-95"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with `MacOS`.</span>
1703
+<a id="__codelineno-0-96" name="__codelineno-0-96"></a>
1704
+<a id="__codelineno-0-97" name="__codelineno-0-97"></a><span class="sd"> Returns:</span>
1705
+<a id="__codelineno-0-98" name="__codelineno-0-98"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1706
+<a id="__codelineno-0-99" name="__codelineno-0-99"></a><span class="sd"> """</span>
1707
+<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts_prefixed</span><span class="p">(</span><span class="s2">"MacOS."</span><span class="p">)</span>
1708
+<a id="__codelineno-0-101" name="__codelineno-0-101"></a>
1709
+<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="k">def</span> <span class="nf">run_artifact_collection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">client_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">artifact</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1710
+<a id="__codelineno-0-103" name="__codelineno-0-103"></a><span class="w"> </span><span class="sd">"""</span>
1711
+<a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="sd"> Run an artifact collection on a specific client.</span>
1712
+<a id="__codelineno-0-105" name="__codelineno-0-105"></a>
1713
+<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> Args:</span>
1714
+<a id="__codelineno-0-107" name="__codelineno-0-107"></a><span class="sd"> client_id (str): The ID of the client.</span>
1715
+<a id="__codelineno-0-108" name="__codelineno-0-108"></a><span class="sd"> artifact (str): The name of the artifact.</span>
1716
+<a id="__codelineno-0-109" name="__codelineno-0-109"></a>
1717
+<a id="__codelineno-0-110" name="__codelineno-0-110"></a><span class="sd"> Returns:</span>
1718
+<a id="__codelineno-0-111" name="__codelineno-0-111"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the results.</span>
1719
+<a id="__codelineno-0-112" name="__codelineno-0-112"></a><span class="sd"> """</span>
1720
+<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="k">try</span><span class="p">:</span>
1721
+<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_create_query</span><span class="p">(</span>
1722
+<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="sa">f</span><span class="s2">"SELECT collect_client(client_id='</span><span class="si">{</span><span class="n">client_id</span><span class="si">}</span><span class="s2">', artifacts=['</span><span class="si">{</span><span class="n">artifact</span><span class="si">}</span><span class="s2">']) FROM scope()"</span><span class="p">,</span>
1723
+<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="p">)</span>
1724
+<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="n">flow</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">execute_query</span><span class="p">(</span><span class="n">query</span><span class="p">)</span>
1725
+<a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Successfully ran artifact collection on </span><span class="si">{</span><span class="n">flow</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
1726
+<a id="__codelineno-0-119" name="__codelineno-0-119"></a>
1727
+<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="n">artifact_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_artifact_key</span><span class="p">(</span><span class="n">client_id</span><span class="p">,</span> <span class="n">artifact</span><span class="p">)</span>
1728
+<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="n">flow_id</span> <span class="o">=</span> <span class="n">flow</span><span class="p">[</span><span class="s2">"results"</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="n">artifact_key</span><span class="p">][</span><span class="s2">"flow_id"</span><span class="p">]</span>
1729
+<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Successfully ran artifact collection on </span><span class="si">{</span><span class="n">flow_id</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
1730
+<a id="__codelineno-0-123" name="__codelineno-0-123"></a>
1731
+<a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="n">completed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">watch_flow_completion</span><span class="p">(</span><span class="n">flow_id</span><span class="p">)</span>
1732
+<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Successfully watched flow completion on </span><span class="si">{</span><span class="n">completed</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
1733
+<a id="__codelineno-0-126" name="__codelineno-0-126"></a>
1734
+<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="n">results</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">read_collection_results</span><span class="p">(</span>
1735
+<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="n">client_id</span><span class="p">,</span>
1736
+<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="n">flow_id</span><span class="p">,</span>
1737
+<a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="n">artifact</span><span class="p">,</span>
1738
+<a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="p">)</span>
1739
+<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="k">return</span> <span class="n">results</span>
1740
+<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
1741
+<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to run artifact collection: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
1742
+<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="k">return</span> <span class="p">{</span>
1743
+<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to run artifact collection"</span><span class="p">,</span>
1744
+<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
1745
+<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="p">}</span>
1746
</code></pre></div></td></tr></table></div>
1747
</details>
1748
@@ -1796,23 +1796,23 @@ begins with <code>Windows</code>.</p>
1796
1797
<details class="quote">
1798
<summary>Source code in <code>app\services\Velociraptor\artifacts.py</code></summary>
1799
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-37">37</a></span>
1800
-<span class="normal"><a href="#__codelineno-0-38">38</a></span>
1801
-<span class="normal"><a href="#__codelineno-0-39">39</a></span>
1799
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-39">39</a></span>
1800
<span class="normal"><a href="#__codelineno-0-40">40</a></span>
1801
<span class="normal"><a href="#__codelineno-0-41">41</a></span>
1802
<span class="normal"><a href="#__codelineno-0-42">42</a></span>
1803
<span class="normal"><a href="#__codelineno-0-43">43</a></span>
1804
<span class="normal"><a href="#__codelineno-0-44">44</a></span>
1807
-<span class="normal"><a href="#__codelineno-0-45">45</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="k">def</span> <span class="nf">collect_artifacts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1808
-<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="w"> </span><span class="sd">"""</span>
1809
-<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> Collect the artifacts from Velociraptor.</span>
1810
-<a id="__codelineno-0-40" name="__codelineno-0-40"></a>
1811
-<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> Returns:</span>
1812
-<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1813
-<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> """</span>
1814
-<a id="__codelineno-0-44" name="__codelineno-0-44"></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_create_query</span><span class="p">(</span><span class="s2">"SELECT name FROM artifact_definitions()"</span><span class="p">)</span>
1815
-<a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">execute_query</span><span class="p">(</span><span class="n">query</span><span class="p">)</span>
1805
+<span class="normal"><a href="#__codelineno-0-45">45</a></span>
1806
+<span class="normal"><a href="#__codelineno-0-46">46</a></span>
1807
+<span class="normal"><a href="#__codelineno-0-47">47</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="k">def</span> <span class="nf">collect_artifacts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1808
+<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="w"> </span><span class="sd">"""</span>
1809
+<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> Collect the artifacts from Velociraptor.</span>
1810
+<a id="__codelineno-0-42" name="__codelineno-0-42"></a>
1811
+<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> Returns:</span>
1812
+<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1813
+<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> """</span>
1814
+<a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_create_query</span><span class="p">(</span><span class="s2">"SELECT name FROM artifact_definitions()"</span><span class="p">)</span>
1815
+<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">execute_query</span><span class="p">(</span><span class="n">query</span><span class="p">)</span>
1816
</code></pre></div></td></tr></table></div>
1817
</details>
1818
</div>
@@ -1857,21 +1857,21 @@ begins with <code>Windows</code>.</p>
1857
1858
<details class="quote">
1859
<summary>Source code in <code>app\services\Velociraptor\artifacts.py</code></summary>
1860
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-73">73</a></span>
1861
-<span class="normal"><a href="#__codelineno-0-74">74</a></span>
1862
-<span class="normal"><a href="#__codelineno-0-75">75</a></span>
1860
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-75">75</a></span>
1861
<span class="normal"><a href="#__codelineno-0-76">76</a></span>
1862
<span class="normal"><a href="#__codelineno-0-77">77</a></span>
1863
<span class="normal"><a href="#__codelineno-0-78">78</a></span>
1864
<span class="normal"><a href="#__codelineno-0-79">79</a></span>
1867
-<span class="normal"><a href="#__codelineno-0-80">80</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="k">def</span> <span class="nf">collect_artifacts_linux</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1868
-<a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="w"> </span><span class="sd">"""</span>
1869
-<a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with `Linux`.</span>
1870
-<a id="__codelineno-0-76" name="__codelineno-0-76"></a>
1871
-<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> Returns:</span>
1872
-<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1873
-<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> """</span>
1874
-<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts_prefixed</span><span class="p">(</span><span class="s2">"Linux."</span><span class="p">)</span>
1865
+<span class="normal"><a href="#__codelineno-0-80">80</a></span>
1866
+<span class="normal"><a href="#__codelineno-0-81">81</a></span>
1867
+<span class="normal"><a href="#__codelineno-0-82">82</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="k">def</span> <span class="nf">collect_artifacts_linux</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1868
+<a id="__codelineno-0-76" name="__codelineno-0-76"></a><span class="w"> </span><span class="sd">"""</span>
1869
+<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with `Linux`.</span>
1870
+<a id="__codelineno-0-78" name="__codelineno-0-78"></a>
1871
+<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> Returns:</span>
1872
+<a id="__codelineno-0-80" name="__codelineno-0-80"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1873
+<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> """</span>
1874
+<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts_prefixed</span><span class="p">(</span><span class="s2">"Linux."</span><span class="p">)</span>
1875
</code></pre></div></td></tr></table></div>
1876
</details>
1877
</div>
@@ -1916,21 +1916,21 @@ begins with <code>Windows</code>.</p>
1916
1917
<details class="quote">
1918
<summary>Source code in <code>app\services\Velociraptor\artifacts.py</code></summary>
1919
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-91">91</a></span>
1920
-<span class="normal"><a href="#__codelineno-0-92">92</a></span>
1921
-<span class="normal"><a href="#__codelineno-0-93">93</a></span>
1922
-<span class="normal"><a href="#__codelineno-0-94">94</a></span>
1923
-<span class="normal"><a href="#__codelineno-0-95">95</a></span>
1924
-<span class="normal"><a href="#__codelineno-0-96">96</a></span>
1925
-<span class="normal"><a href="#__codelineno-0-97">97</a></span>
1926
-<span class="normal"><a href="#__codelineno-0-98">98</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-91" name="__codelineno-0-91"></a><span class="k">def</span> <span class="nf">collect_artifacts_macos</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1927
-<a id="__codelineno-0-92" name="__codelineno-0-92"></a><span class="w"> </span><span class="sd">"""</span>
1928
-<a id="__codelineno-0-93" name="__codelineno-0-93"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with `MacOS`.</span>
1929
-<a id="__codelineno-0-94" name="__codelineno-0-94"></a>
1930
-<a id="__codelineno-0-95" name="__codelineno-0-95"></a><span class="sd"> Returns:</span>
1931
-<a id="__codelineno-0-96" name="__codelineno-0-96"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1932
-<a id="__codelineno-0-97" name="__codelineno-0-97"></a><span class="sd"> """</span>
1933
-<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts_prefixed</span><span class="p">(</span><span class="s2">"MacOS."</span><span class="p">)</span>
1919
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-93"> 93</a></span>
1920
+<span class="normal"><a href="#__codelineno-0-94"> 94</a></span>
1921
+<span class="normal"><a href="#__codelineno-0-95"> 95</a></span>
1922
+<span class="normal"><a href="#__codelineno-0-96"> 96</a></span>
1923
+<span class="normal"><a href="#__codelineno-0-97"> 97</a></span>
1924
+<span class="normal"><a href="#__codelineno-0-98"> 98</a></span>
1925
+<span class="normal"><a href="#__codelineno-0-99"> 99</a></span>
1926
+<span class="normal"><a href="#__codelineno-0-100">100</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-93" name="__codelineno-0-93"></a><span class="k">def</span> <span class="nf">collect_artifacts_macos</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
1927
+<a id="__codelineno-0-94" name="__codelineno-0-94"></a><span class="w"> </span><span class="sd">"""</span>
1928
+<a id="__codelineno-0-95" name="__codelineno-0-95"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with `MacOS`.</span>
1929
+<a id="__codelineno-0-96" name="__codelineno-0-96"></a>
1930
+<a id="__codelineno-0-97" name="__codelineno-0-97"></a><span class="sd"> Returns:</span>
1931
+<a id="__codelineno-0-98" name="__codelineno-0-98"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
1932
+<a id="__codelineno-0-99" name="__codelineno-0-99"></a><span class="sd"> """</span>
1933
+<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts_prefixed</span><span class="p">(</span><span class="s2">"MacOS."</span><span class="p">)</span>
1934
</code></pre></div></td></tr></table></div>
1935
</details>
1936
</div>
@@ -2003,9 +2003,7 @@ begins with <code>Windows</code>.</p>
2003
2004
<details class="quote">
2005
<summary>Source code in <code>app\services\Velociraptor\artifacts.py</code></summary>
2006
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-47">47</a></span>
2007
-<span class="normal"><a href="#__codelineno-0-48">48</a></span>
2008
-<span class="normal"><a href="#__codelineno-0-49">49</a></span>
2006
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-49">49</a></span>
2007
<span class="normal"><a href="#__codelineno-0-50">50</a></span>
2008
<span class="normal"><a href="#__codelineno-0-51">51</a></span>
2009
<span class="normal"><a href="#__codelineno-0-52">52</a></span>
@@ -2027,31 +2025,33 @@ begins with <code>Windows</code>.</p>
2025
<span class="normal"><a href="#__codelineno-0-68">68</a></span>
2026
<span class="normal"><a href="#__codelineno-0-69">69</a></span>
2027
<span class="normal"><a href="#__codelineno-0-70">70</a></span>
2030
-<span class="normal"><a href="#__codelineno-0-71">71</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="k">def</span> <span class="nf">collect_artifacts_prefixed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
2031
-<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="w"> </span><span class="sd">"""</span>
2032
-<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with a specific prefix.</span>
2033
-<a id="__codelineno-0-50" name="__codelineno-0-50"></a>
2034
-<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> Args:</span>
2035
-<a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="sd"> prefix (str): The prefix to filter the artifacts.</span>
2036
-<a id="__codelineno-0-53" name="__codelineno-0-53"></a>
2037
-<a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="sd"> Returns:</span>
2038
-<a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
2039
-<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> """</span>
2040
-<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="n">artifacts_response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts</span><span class="p">()</span>
2041
-<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">artifacts_response</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
2042
-<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="k">return</span> <span class="n">artifacts_response</span>
2043
-<a id="__codelineno-0-60" name="__codelineno-0-60"></a>
2044
-<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="n">filtered_artifacts</span> <span class="o">=</span> <span class="p">[</span>
2045
-<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="n">artifact</span>
2046
-<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="k">for</span> <span class="n">artifact</span> <span class="ow">in</span> <span class="n">artifacts_response</span><span class="p">[</span><span class="s2">"results"</span><span class="p">]</span>
2047
-<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="k">if</span> <span class="n">artifact</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span>
2048
-<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="p">]</span>
2049
-<a id="__codelineno-0-66" name="__codelineno-0-66"></a>
2050
-<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="k">return</span> <span class="p">{</span>
2051
-<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
2052
-<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Successfully collected </span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> artifacts"</span><span class="p">,</span>
2053
-<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="s2">"artifacts"</span><span class="p">:</span> <span class="n">filtered_artifacts</span><span class="p">,</span>
2054
-<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="p">}</span>
2028
+<span class="normal"><a href="#__codelineno-0-71">71</a></span>
2029
+<span class="normal"><a href="#__codelineno-0-72">72</a></span>
2030
+<span class="normal"><a href="#__codelineno-0-73">73</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="k">def</span> <span class="nf">collect_artifacts_prefixed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
2031
+<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="w"> </span><span class="sd">"""</span>
2032
+<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with a specific prefix.</span>
2033
+<a id="__codelineno-0-52" name="__codelineno-0-52"></a>
2034
+<a id="__codelineno-0-53" name="__codelineno-0-53"></a><span class="sd"> Args:</span>
2035
+<a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="sd"> prefix (str): The prefix to filter the artifacts.</span>
2036
+<a id="__codelineno-0-55" name="__codelineno-0-55"></a>
2037
+<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> Returns:</span>
2038
+<a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
2039
+<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> """</span>
2040
+<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="n">artifacts_response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts</span><span class="p">()</span>
2041
+<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">artifacts_response</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
2042
+<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="k">return</span> <span class="n">artifacts_response</span>
2043
+<a id="__codelineno-0-62" name="__codelineno-0-62"></a>
2044
+<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="n">filtered_artifacts</span> <span class="o">=</span> <span class="p">[</span>
2045
+<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="n">artifact</span>
2046
+<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="k">for</span> <span class="n">artifact</span> <span class="ow">in</span> <span class="n">artifacts_response</span><span class="p">[</span><span class="s2">"results"</span><span class="p">]</span>
2047
+<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">if</span> <span class="n">artifact</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span>
2048
+<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="p">]</span>
2049
+<a id="__codelineno-0-68" name="__codelineno-0-68"></a>
2050
+<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="k">return</span> <span class="p">{</span>
2051
+<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
2052
+<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Successfully collected </span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> artifacts"</span><span class="p">,</span>
2053
+<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="s2">"artifacts"</span><span class="p">:</span> <span class="n">filtered_artifacts</span><span class="p">,</span>
2054
+<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="p">}</span>
2055
</code></pre></div></td></tr></table></div>
2056
</details>
2057
</div>
@@ -2096,21 +2096,21 @@ begins with <code>Windows</code>.</p>
2096
2097
<details class="quote">
2098
<summary>Source code in <code>app\services\Velociraptor\artifacts.py</code></summary>
2099
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-82">82</a></span>
2100
-<span class="normal"><a href="#__codelineno-0-83">83</a></span>
2101
-<span class="normal"><a href="#__codelineno-0-84">84</a></span>
2099
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-84">84</a></span>
2100
<span class="normal"><a href="#__codelineno-0-85">85</a></span>
2101
<span class="normal"><a href="#__codelineno-0-86">86</a></span>
2102
<span class="normal"><a href="#__codelineno-0-87">87</a></span>
2103
<span class="normal"><a href="#__codelineno-0-88">88</a></span>
2106
-<span class="normal"><a href="#__codelineno-0-89">89</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="k">def</span> <span class="nf">collect_artifacts_windows</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
2107
-<a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="w"> </span><span class="sd">"""</span>
2108
-<a id="__codelineno-0-84" name="__codelineno-0-84"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with `Windows`.</span>
2109
-<a id="__codelineno-0-85" name="__codelineno-0-85"></a>
2110
-<a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="sd"> Returns:</span>
2111
-<a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
2112
-<a id="__codelineno-0-88" name="__codelineno-0-88"></a><span class="sd"> """</span>
2113
-<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts_prefixed</span><span class="p">(</span><span class="s2">"Windows."</span><span class="p">)</span>
2104
+<span class="normal"><a href="#__codelineno-0-89">89</a></span>
2105
+<span class="normal"><a href="#__codelineno-0-90">90</a></span>
2106
+<span class="normal"><a href="#__codelineno-0-91">91</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-84" name="__codelineno-0-84"></a><span class="k">def</span> <span class="nf">collect_artifacts_windows</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
2107
+<a id="__codelineno-0-85" name="__codelineno-0-85"></a><span class="w"> </span><span class="sd">"""</span>
2108
+<a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="sd"> Collect the artifacts from Velociraptor that have a name beginning with `Windows`.</span>
2109
+<a id="__codelineno-0-87" name="__codelineno-0-87"></a>
2110
+<a id="__codelineno-0-88" name="__codelineno-0-88"></a><span class="sd"> Returns:</span>
2111
+<a id="__codelineno-0-89" name="__codelineno-0-89"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the artifacts.</span>
2112
+<a id="__codelineno-0-90" name="__codelineno-0-90"></a><span class="sd"> """</span>
2113
+<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_artifacts_prefixed</span><span class="p">(</span><span class="s2">"Windows."</span><span class="p">)</span>
2114
</code></pre></div></td></tr></table></div>
2115
</details>
2116
</div>
@@ -2197,9 +2197,7 @@ begins with <code>Windows</code>.</p>
2197
2198
<details class="quote">
2199
<summary>Source code in <code>app\services\Velociraptor\artifacts.py</code></summary>
2200
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-100">100</a></span>
2201
-<span class="normal"><a href="#__codelineno-0-101">101</a></span>
2202
-<span class="normal"><a href="#__codelineno-0-102">102</a></span>
2200
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-102">102</a></span>
2201
<span class="normal"><a href="#__codelineno-0-103">103</a></span>
2202
<span class="normal"><a href="#__codelineno-0-104">104</a></span>
2203
<span class="normal"><a href="#__codelineno-0-105">105</a></span>
@@ -2233,43 +2231,45 @@ begins with <code>Windows</code>.</p>
2231
<span class="normal"><a href="#__codelineno-0-133">133</a></span>
2232
<span class="normal"><a href="#__codelineno-0-134">134</a></span>
2233
<span class="normal"><a href="#__codelineno-0-135">135</a></span>
2236
-<span class="normal"><a href="#__codelineno-0-136">136</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="k">def</span> <span class="nf">run_artifact_collection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">client_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">artifact</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
2237
-<a id="__codelineno-0-101" name="__codelineno-0-101"></a><span class="w"> </span><span class="sd">"""</span>
2238
-<a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="sd"> Run an artifact collection on a specific client.</span>
2239
-<a id="__codelineno-0-103" name="__codelineno-0-103"></a>
2240
-<a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="sd"> Args:</span>
2241
-<a id="__codelineno-0-105" name="__codelineno-0-105"></a><span class="sd"> client_id (str): The ID of the client.</span>
2242
-<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> artifact (str): The name of the artifact.</span>
2243
-<a id="__codelineno-0-107" name="__codelineno-0-107"></a>
2244
-<a id="__codelineno-0-108" name="__codelineno-0-108"></a><span class="sd"> Returns:</span>
2245
-<a id="__codelineno-0-109" name="__codelineno-0-109"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the results.</span>
2246
-<a id="__codelineno-0-110" name="__codelineno-0-110"></a><span class="sd"> """</span>
2247
-<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="k">try</span><span class="p">:</span>
2248
-<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_create_query</span><span class="p">(</span>
2249
-<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="sa">f</span><span class="s2">"SELECT collect_client(client_id='</span><span class="si">{</span><span class="n">client_id</span><span class="si">}</span><span class="s2">', artifacts=['</span><span class="si">{</span><span class="n">artifact</span><span class="si">}</span><span class="s2">']) FROM scope()"</span><span class="p">,</span>
2250
-<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="p">)</span>
2251
-<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="n">flow</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">execute_query</span><span class="p">(</span><span class="n">query</span><span class="p">)</span>
2252
-<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Successfully ran artifact collection on </span><span class="si">{</span><span class="n">flow</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2253
-<a id="__codelineno-0-117" name="__codelineno-0-117"></a>
2254
-<a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="n">artifact_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_artifact_key</span><span class="p">(</span><span class="n">client_id</span><span class="p">,</span> <span class="n">artifact</span><span class="p">)</span>
2255
-<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="n">flow_id</span> <span class="o">=</span> <span class="n">flow</span><span class="p">[</span><span class="s2">"results"</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="n">artifact_key</span><span class="p">][</span><span class="s2">"flow_id"</span><span class="p">]</span>
2256
-<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Successfully ran artifact collection on </span><span class="si">{</span><span class="n">flow_id</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2257
-<a id="__codelineno-0-121" name="__codelineno-0-121"></a>
2258
-<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="n">completed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">watch_flow_completion</span><span class="p">(</span><span class="n">flow_id</span><span class="p">)</span>
2259
-<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Successfully watched flow completion on </span><span class="si">{</span><span class="n">completed</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2260
-<a id="__codelineno-0-124" name="__codelineno-0-124"></a>
2261
-<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="n">results</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">read_collection_results</span><span class="p">(</span>
2262
-<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="n">client_id</span><span class="p">,</span>
2263
-<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="n">flow_id</span><span class="p">,</span>
2264
-<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="n">artifact</span><span class="p">,</span>
2265
-<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="p">)</span>
2266
-<a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="k">return</span> <span class="n">results</span>
2267
-<a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
2268
-<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to run artifact collection: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2269
-<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="k">return</span> <span class="p">{</span>
2270
-<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to run artifact collection"</span><span class="p">,</span>
2271
-<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2272
-<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="p">}</span>
2234
+<span class="normal"><a href="#__codelineno-0-136">136</a></span>
2235
+<span class="normal"><a href="#__codelineno-0-137">137</a></span>
2236
+<span class="normal"><a href="#__codelineno-0-138">138</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="k">def</span> <span class="nf">run_artifact_collection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">client_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">artifact</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
2237
+<a id="__codelineno-0-103" name="__codelineno-0-103"></a><span class="w"> </span><span class="sd">"""</span>
2238
+<a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="sd"> Run an artifact collection on a specific client.</span>
2239
+<a id="__codelineno-0-105" name="__codelineno-0-105"></a>
2240
+<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> Args:</span>
2241
+<a id="__codelineno-0-107" name="__codelineno-0-107"></a><span class="sd"> client_id (str): The ID of the client.</span>
2242
+<a id="__codelineno-0-108" name="__codelineno-0-108"></a><span class="sd"> artifact (str): The name of the artifact.</span>
2243
+<a id="__codelineno-0-109" name="__codelineno-0-109"></a>
2244
+<a id="__codelineno-0-110" name="__codelineno-0-110"></a><span class="sd"> Returns:</span>
2245
+<a id="__codelineno-0-111" name="__codelineno-0-111"></a><span class="sd"> dict: A dictionary with the success status, a message, and potentially the results.</span>
2246
+<a id="__codelineno-0-112" name="__codelineno-0-112"></a><span class="sd"> """</span>
2247
+<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="k">try</span><span class="p">:</span>
2248
+<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_create_query</span><span class="p">(</span>
2249
+<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="sa">f</span><span class="s2">"SELECT collect_client(client_id='</span><span class="si">{</span><span class="n">client_id</span><span class="si">}</span><span class="s2">', artifacts=['</span><span class="si">{</span><span class="n">artifact</span><span class="si">}</span><span class="s2">']) FROM scope()"</span><span class="p">,</span>
2250
+<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="p">)</span>
2251
+<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="n">flow</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">execute_query</span><span class="p">(</span><span class="n">query</span><span class="p">)</span>
2252
+<a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Successfully ran artifact collection on </span><span class="si">{</span><span class="n">flow</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2253
+<a id="__codelineno-0-119" name="__codelineno-0-119"></a>
2254
+<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="n">artifact_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_artifact_key</span><span class="p">(</span><span class="n">client_id</span><span class="p">,</span> <span class="n">artifact</span><span class="p">)</span>
2255
+<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="n">flow_id</span> <span class="o">=</span> <span class="n">flow</span><span class="p">[</span><span class="s2">"results"</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="n">artifact_key</span><span class="p">][</span><span class="s2">"flow_id"</span><span class="p">]</span>
2256
+<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Successfully ran artifact collection on </span><span class="si">{</span><span class="n">flow_id</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2257
+<a id="__codelineno-0-123" name="__codelineno-0-123"></a>
2258
+<a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="n">completed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">watch_flow_completion</span><span class="p">(</span><span class="n">flow_id</span><span class="p">)</span>
2259
+<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Successfully watched flow completion on </span><span class="si">{</span><span class="n">completed</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2260
+<a id="__codelineno-0-126" name="__codelineno-0-126"></a>
2261
+<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="n">results</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">universal_service</span><span class="o">.</span><span class="n">read_collection_results</span><span class="p">(</span>
2262
+<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="n">client_id</span><span class="p">,</span>
2263
+<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="n">flow_id</span><span class="p">,</span>
2264
+<a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="n">artifact</span><span class="p">,</span>
2265
+<a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="p">)</span>
2266
+<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="k">return</span> <span class="n">results</span>
2267
+<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
2268
+<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to run artifact collection: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2269
+<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="k">return</span> <span class="p">{</span>
2270
+<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to run artifact collection"</span><span class="p">,</span>
2271
+<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2272
+<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="p">}</span>
2273
</code></pre></div></td></tr></table></div>
2274
</details>
2275
</div>
backend/site/cases/index.html
+121
-117
@@ -1051,11 +1051,7 @@ This class inherits from SQLAlchemy's Model class.</p>
1051
1052
<details class="quote">
1053
<summary>Source code in <code>app\routes\dfir_iris.py</code></summary>
1054
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-53">53</a></span>
1055
-<span class="normal"><a href="#__codelineno-0-54">54</a></span>
1056
-<span class="normal"><a href="#__codelineno-0-55">55</a></span>
1057
-<span class="normal"><a href="#__codelineno-0-56">56</a></span>
1058
-<span class="normal"><a href="#__codelineno-0-57">57</a></span>
1054
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-57">57</a></span>
1055
<span class="normal"><a href="#__codelineno-0-58">58</a></span>
1056
<span class="normal"><a href="#__codelineno-0-59">59</a></span>
1057
<span class="normal"><a href="#__codelineno-0-60">60</a></span>
@@ -1067,23 +1063,33 @@ This class inherits from SQLAlchemy's Model class.</p>
1063
<span class="normal"><a href="#__codelineno-0-66">66</a></span>
1064
<span class="normal"><a href="#__codelineno-0-67">67</a></span>
1065
<span class="normal"><a href="#__codelineno-0-68">68</a></span>
1070
-<span class="normal"><a href="#__codelineno-0-69">69</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-53" name="__codelineno-0-53"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/dfir_iris/cases/<case_id>/note"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</span><span class="p">])</span>
1071
-<a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="k">def</span> <span class="nf">create_case_note</span><span class="p">(</span><span class="n">case_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
1072
-<a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="w"> </span><span class="sd">"""</span>
1073
-<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> Endpoint to create a note for a specific case in DFIR IRIS.</span>
1074
-<a id="__codelineno-0-57" name="__codelineno-0-57"></a>
1075
-<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> Args:</span>
1076
-<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="sd"> case_id (str): The ID of the case to create a note for.</span>
1077
-<a id="__codelineno-0-60" name="__codelineno-0-60"></a>
1078
-<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> Returns:</span>
1079
-<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> json: A JSON response containing the result of the note creation operation.</span>
1080
-<a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> """</span>
1081
-<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="n">note_title</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">json</span><span class="p">[</span><span class="s2">"note_title"</span><span class="p">]</span>
1082
-<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="n">note_content</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">json</span><span class="p">[</span><span class="s2">"note_content"</span><span class="p">]</span>
1083
-<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="n">case_service</span> <span class="o">=</span> <span class="n">CasesService</span><span class="p">()</span>
1084
-<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="n">notes_service</span> <span class="o">=</span> <span class="n">NotesService</span><span class="p">()</span>
1085
-<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="n">created_note</span> <span class="o">=</span> <span class="n">notes_service</span><span class="o">.</span><span class="n">create_case_note</span><span class="p">(</span><span class="n">case_id</span><span class="o">=</span><span class="n">case_id</span><span class="p">,</span> <span class="n">note_title</span><span class="o">=</span><span class="n">note_title</span><span class="p">,</span> <span class="n">note_content</span><span class="o">=</span><span class="n">note_content</span><span class="p">)</span>
1086
-<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="k">return</span> <span class="n">created_note</span>
1066
+<span class="normal"><a href="#__codelineno-0-69">69</a></span>
1067
+<span class="normal"><a href="#__codelineno-0-70">70</a></span>
1068
+<span class="normal"><a href="#__codelineno-0-71">71</a></span>
1069
+<span class="normal"><a href="#__codelineno-0-72">72</a></span>
1070
+<span class="normal"><a href="#__codelineno-0-73">73</a></span>
1071
+<span class="normal"><a href="#__codelineno-0-74">74</a></span>
1072
+<span class="normal"><a href="#__codelineno-0-75">75</a></span>
1073
+<span class="normal"><a href="#__codelineno-0-76">76</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/dfir_iris/cases/<case_id>/note"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</span><span class="p">])</span>
1074
+<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="k">def</span> <span class="nf">create_case_note</span><span class="p">(</span><span class="n">case_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
1075
+<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="w"> </span><span class="sd">"""</span>
1076
+<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="sd"> Endpoint to create a note for a specific case in DFIR IRIS.</span>
1077
+<a id="__codelineno-0-61" name="__codelineno-0-61"></a>
1078
+<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> Args:</span>
1079
+<a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> case_id (str): The ID of the case to create a note for.</span>
1080
+<a id="__codelineno-0-64" name="__codelineno-0-64"></a>
1081
+<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="sd"> Returns:</span>
1082
+<a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="sd"> json: A JSON response containing the result of the note creation operation.</span>
1083
+<a id="__codelineno-0-67" name="__codelineno-0-67"></a><span class="sd"> """</span>
1084
+<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="n">note_title</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">json</span><span class="p">[</span><span class="s2">"note_title"</span><span class="p">]</span>
1085
+<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="n">note_content</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">json</span><span class="p">[</span><span class="s2">"note_content"</span><span class="p">]</span>
1086
+<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="n">notes_service</span> <span class="o">=</span> <span class="n">NotesService</span><span class="p">()</span>
1087
+<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="n">created_note</span> <span class="o">=</span> <span class="n">notes_service</span><span class="o">.</span><span class="n">create_case_note</span><span class="p">(</span>
1088
+<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="n">cid</span><span class="o">=</span><span class="n">case_id</span><span class="p">,</span>
1089
+<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="n">note_title</span><span class="o">=</span><span class="n">note_title</span><span class="p">,</span>
1090
+<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="n">note_content</span><span class="o">=</span><span class="n">note_content</span><span class="p">,</span>
1091
+<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="p">)</span>
1092
+<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="k">return</span> <span class="n">created_note</span>
1093
</code></pre></div></td></tr></table></div>
1094
</details>
1095
</div>
@@ -1127,27 +1133,27 @@ This class inherits from SQLAlchemy's Model class.</p>
1133
1134
<details class="quote">
1135
<summary>Source code in <code>app\routes\dfir_iris.py</code></summary>
1130
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-86">86</a></span>
1131
-<span class="normal"><a href="#__codelineno-0-87">87</a></span>
1132
-<span class="normal"><a href="#__codelineno-0-88">88</a></span>
1133
-<span class="normal"><a href="#__codelineno-0-89">89</a></span>
1134
-<span class="normal"><a href="#__codelineno-0-90">90</a></span>
1135
-<span class="normal"><a href="#__codelineno-0-91">91</a></span>
1136
-<span class="normal"><a href="#__codelineno-0-92">92</a></span>
1137
-<span class="normal"><a href="#__codelineno-0-93">93</a></span>
1138
-<span class="normal"><a href="#__codelineno-0-94">94</a></span>
1139
-<span class="normal"><a href="#__codelineno-0-95">95</a></span>
1140
-<span class="normal"><a href="#__codelineno-0-96">96</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/dfir_iris/alerts"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1141
-<a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="k">def</span> <span class="nf">get_alerts</span><span class="p">():</span>
1142
-<a id="__codelineno-0-88" name="__codelineno-0-88"></a><span class="w"> </span><span class="sd">"""</span>
1143
-<a id="__codelineno-0-89" name="__codelineno-0-89"></a><span class="sd"> Endpoint to retrieve all alerts from DFIR IRIS.</span>
1144
-<a id="__codelineno-0-90" name="__codelineno-0-90"></a>
1145
-<a id="__codelineno-0-91" name="__codelineno-0-91"></a><span class="sd"> Returns:</span>
1146
-<a id="__codelineno-0-92" name="__codelineno-0-92"></a><span class="sd"> json: A JSON response containing the list of alerts.</span>
1147
-<a id="__codelineno-0-93" name="__codelineno-0-93"></a><span class="sd"> """</span>
1148
-<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AlertsService</span><span class="p">()</span>
1149
-<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="n">alerts</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">list_alerts</span><span class="p">()</span>
1150
-<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="k">return</span> <span class="n">alerts</span>
1136
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-95"> 95</a></span>
1137
+<span class="normal"><a href="#__codelineno-0-96"> 96</a></span>
1138
+<span class="normal"><a href="#__codelineno-0-97"> 97</a></span>
1139
+<span class="normal"><a href="#__codelineno-0-98"> 98</a></span>
1140
+<span class="normal"><a href="#__codelineno-0-99"> 99</a></span>
1141
+<span class="normal"><a href="#__codelineno-0-100">100</a></span>
1142
+<span class="normal"><a href="#__codelineno-0-101">101</a></span>
1143
+<span class="normal"><a href="#__codelineno-0-102">102</a></span>
1144
+<span class="normal"><a href="#__codelineno-0-103">103</a></span>
1145
+<span class="normal"><a href="#__codelineno-0-104">104</a></span>
1146
+<span class="normal"><a href="#__codelineno-0-105">105</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-95" name="__codelineno-0-95"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/dfir_iris/alerts"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1147
+<a id="__codelineno-0-96" name="__codelineno-0-96"></a><span class="k">def</span> <span class="nf">get_alerts</span><span class="p">():</span>
1148
+<a id="__codelineno-0-97" name="__codelineno-0-97"></a><span class="w"> </span><span class="sd">"""</span>
1149
+<a id="__codelineno-0-98" name="__codelineno-0-98"></a><span class="sd"> Endpoint to retrieve all alerts from DFIR IRIS.</span>
1150
+<a id="__codelineno-0-99" name="__codelineno-0-99"></a>
1151
+<a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="sd"> Returns:</span>
1152
+<a id="__codelineno-0-101" name="__codelineno-0-101"></a><span class="sd"> json: A JSON response containing the list of alerts.</span>
1153
+<a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="sd"> """</span>
1154
+<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AlertsService</span><span class="p">()</span>
1155
+<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="n">alerts</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">list_alerts</span><span class="p">()</span>
1156
+<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="k">return</span> <span class="n">alerts</span>
1157
</code></pre></div></td></tr></table></div>
1158
</details>
1159
</div>
@@ -1219,10 +1225,7 @@ This class inherits from SQLAlchemy's Model class.</p>
1225
1226
<details class="quote">
1227
<summary>Source code in <code>app\routes\dfir_iris.py</code></summary>
1222
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-22">22</a></span>
1223
-<span class="normal"><a href="#__codelineno-0-23">23</a></span>
1224
-<span class="normal"><a href="#__codelineno-0-24">24</a></span>
1225
-<span class="normal"><a href="#__codelineno-0-25">25</a></span>
1228
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-25">25</a></span>
1229
<span class="normal"><a href="#__codelineno-0-26">26</a></span>
1230
<span class="normal"><a href="#__codelineno-0-27">27</a></span>
1231
<span class="normal"><a href="#__codelineno-0-28">28</a></span>
@@ -1232,20 +1235,23 @@ This class inherits from SQLAlchemy's Model class.</p>
1235
<span class="normal"><a href="#__codelineno-0-32">32</a></span>
1236
<span class="normal"><a href="#__codelineno-0-33">33</a></span>
1237
<span class="normal"><a href="#__codelineno-0-34">34</a></span>
1235
-<span class="normal"><a href="#__codelineno-0-35">35</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/dfir_iris/cases/<case_id>"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1236
-<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="k">def</span> <span class="nf">get_case</span><span class="p">(</span><span class="n">case_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
1237
-<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="w"> </span><span class="sd">"""</span>
1238
-<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="sd"> Endpoint to retrieve a specific case from DFIR IRIS.</span>
1239
-<a id="__codelineno-0-26" name="__codelineno-0-26"></a>
1240
-<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> Args:</span>
1241
-<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> case_id (str): The ID of the case to retrieve.</span>
1238
+<span class="normal"><a href="#__codelineno-0-35">35</a></span>
1239
+<span class="normal"><a href="#__codelineno-0-36">36</a></span>
1240
+<span class="normal"><a href="#__codelineno-0-37">37</a></span>
1241
+<span class="normal"><a href="#__codelineno-0-38">38</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/dfir_iris/cases/<case_id>"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1242
+<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="k">def</span> <span class="nf">get_case</span><span class="p">(</span><span class="n">case_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
1243
+<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="w"> </span><span class="sd">"""</span>
1244
+<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> Endpoint to retrieve a specific case from DFIR IRIS.</span>
1245
<a id="__codelineno-0-29" name="__codelineno-0-29"></a>
1243
-<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> Returns:</span>
1244
-<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> json: A JSON response containing the case data.</span>
1245
-<a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="sd"> """</span>
1246
-<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">CasesService</span><span class="p">()</span>
1247
-<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="n">case</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">get_case</span><span class="p">(</span><span class="n">case_id</span><span class="o">=</span><span class="n">case_id</span><span class="p">)</span>
1248
-<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="k">return</span> <span class="n">case</span>
1246
+<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> Args:</span>
1247
+<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> case_id (str): The ID of the case to retrieve.</span>
1248
+<a id="__codelineno-0-32" name="__codelineno-0-32"></a>
1249
+<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="sd"> Returns:</span>
1250
+<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> json: A JSON response containing the case data.</span>
1251
+<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> """</span>
1252
+<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">CasesService</span><span class="p">()</span>
1253
+<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">case</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">get_case</span><span class="p">(</span><span class="n">case_id</span><span class="o">=</span><span class="n">case_id</span><span class="p">)</span>
1254
+<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="k">return</span> <span class="n">case</span>
1255
</code></pre></div></td></tr></table></div>
1256
</details>
1257
</div>
@@ -1317,33 +1323,33 @@ This class inherits from SQLAlchemy's Model class.</p>
1323
1324
<details class="quote">
1325
<summary>Source code in <code>app\routes\dfir_iris.py</code></summary>
1320
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-71">71</a></span>
1321
-<span class="normal"><a href="#__codelineno-0-72">72</a></span>
1322
-<span class="normal"><a href="#__codelineno-0-73">73</a></span>
1323
-<span class="normal"><a href="#__codelineno-0-74">74</a></span>
1324
-<span class="normal"><a href="#__codelineno-0-75">75</a></span>
1325
-<span class="normal"><a href="#__codelineno-0-76">76</a></span>
1326
-<span class="normal"><a href="#__codelineno-0-77">77</a></span>
1327
-<span class="normal"><a href="#__codelineno-0-78">78</a></span>
1328
-<span class="normal"><a href="#__codelineno-0-79">79</a></span>
1326
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-79">79</a></span>
1327
<span class="normal"><a href="#__codelineno-0-80">80</a></span>
1328
<span class="normal"><a href="#__codelineno-0-81">81</a></span>
1329
<span class="normal"><a href="#__codelineno-0-82">82</a></span>
1330
<span class="normal"><a href="#__codelineno-0-83">83</a></span>
1333
-<span class="normal"><a href="#__codelineno-0-84">84</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/dfir_iris/cases/<case_id>/assets"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1334
-<a id="__codelineno-0-72" name="__codelineno-0-72"></a><span class="k">def</span> <span class="nf">get_case_assets</span><span class="p">(</span><span class="n">case_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
1335
-<a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="w"> </span><span class="sd">"""</span>
1336
-<a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="sd"> Endpoint to retrieve assets of a specific case from DFIR IRIS.</span>
1337
-<a id="__codelineno-0-75" name="__codelineno-0-75"></a>
1338
-<a id="__codelineno-0-76" name="__codelineno-0-76"></a><span class="sd"> Args:</span>
1339
-<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> case_id (str): The ID of the case to retrieve assets from.</span>
1340
-<a id="__codelineno-0-78" name="__codelineno-0-78"></a>
1341
-<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> Returns:</span>
1342
-<a id="__codelineno-0-80" name="__codelineno-0-80"></a><span class="sd"> json: A JSON response containing the list of assets for the case.</span>
1343
-<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> """</span>
1344
-<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="n">asset_service</span> <span class="o">=</span> <span class="n">AssetsService</span><span class="p">()</span>
1345
-<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="n">assets</span> <span class="o">=</span> <span class="n">asset_service</span><span class="o">.</span><span class="n">get_case_assets</span><span class="p">(</span><span class="n">case_id</span><span class="o">=</span><span class="n">case_id</span><span class="p">)</span>
1346
-<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="k">return</span> <span class="n">assets</span>
1331
+<span class="normal"><a href="#__codelineno-0-84">84</a></span>
1332
+<span class="normal"><a href="#__codelineno-0-85">85</a></span>
1333
+<span class="normal"><a href="#__codelineno-0-86">86</a></span>
1334
+<span class="normal"><a href="#__codelineno-0-87">87</a></span>
1335
+<span class="normal"><a href="#__codelineno-0-88">88</a></span>
1336
+<span class="normal"><a href="#__codelineno-0-89">89</a></span>
1337
+<span class="normal"><a href="#__codelineno-0-90">90</a></span>
1338
+<span class="normal"><a href="#__codelineno-0-91">91</a></span>
1339
+<span class="normal"><a href="#__codelineno-0-92">92</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/dfir_iris/cases/<case_id>/assets"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1340
+<a id="__codelineno-0-80" name="__codelineno-0-80"></a><span class="k">def</span> <span class="nf">get_case_assets</span><span class="p">(</span><span class="n">case_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
1341
+<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="w"> </span><span class="sd">"""</span>
1342
+<a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="sd"> Endpoint to retrieve assets of a specific case from DFIR IRIS.</span>
1343
+<a id="__codelineno-0-83" name="__codelineno-0-83"></a>
1344
+<a id="__codelineno-0-84" name="__codelineno-0-84"></a><span class="sd"> Args:</span>
1345
+<a id="__codelineno-0-85" name="__codelineno-0-85"></a><span class="sd"> case_id (str): The ID of the case to retrieve assets from.</span>
1346
+<a id="__codelineno-0-86" name="__codelineno-0-86"></a>
1347
+<a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="sd"> Returns:</span>
1348
+<a id="__codelineno-0-88" name="__codelineno-0-88"></a><span class="sd"> json: A JSON response containing the list of assets for the case.</span>
1349
+<a id="__codelineno-0-89" name="__codelineno-0-89"></a><span class="sd"> """</span>
1350
+<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="n">asset_service</span> <span class="o">=</span> <span class="n">AssetsService</span><span class="p">()</span>
1351
+<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="n">assets</span> <span class="o">=</span> <span class="n">asset_service</span><span class="o">.</span><span class="n">get_case_assets</span><span class="p">(</span><span class="n">cid</span><span class="o">=</span><span class="n">case_id</span><span class="p">)</span>
1352
+<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="k">return</span> <span class="n">assets</span>
1353
</code></pre></div></td></tr></table></div>
1354
</details>
1355
</div>
@@ -1415,11 +1421,7 @@ This class inherits from SQLAlchemy's Model class.</p>
1421
1422
<details class="quote">
1423
<summary>Source code in <code>app\routes\dfir_iris.py</code></summary>
1418
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-37">37</a></span>
1419
-<span class="normal"><a href="#__codelineno-0-38">38</a></span>
1420
-<span class="normal"><a href="#__codelineno-0-39">39</a></span>
1421
-<span class="normal"><a href="#__codelineno-0-40">40</a></span>
1422
-<span class="normal"><a href="#__codelineno-0-41">41</a></span>
1424
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-41">41</a></span>
1425
<span class="normal"><a href="#__codelineno-0-42">42</a></span>
1426
<span class="normal"><a href="#__codelineno-0-43">43</a></span>
1427
<span class="normal"><a href="#__codelineno-0-44">44</a></span>
@@ -1429,21 +1431,23 @@ This class inherits from SQLAlchemy's Model class.</p>
1431
<span class="normal"><a href="#__codelineno-0-48">48</a></span>
1432
<span class="normal"><a href="#__codelineno-0-49">49</a></span>
1433
<span class="normal"><a href="#__codelineno-0-50">50</a></span>
1432
-<span class="normal"><a href="#__codelineno-0-51">51</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/dfir_iris/cases/<case_id>/notes"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1433
-<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="k">def</span> <span class="nf">get_case_notes</span><span class="p">(</span><span class="n">case_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
1434
-<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="w"> </span><span class="sd">"""</span>
1435
-<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="sd"> Endpoint to retrieve notes of a specific case from DFIR IRIS.</span>
1436
-<a id="__codelineno-0-41" name="__codelineno-0-41"></a>
1437
-<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> Args:</span>
1438
-<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> case_id (str): The ID of the case to retrieve notes from.</span>
1439
-<a id="__codelineno-0-44" name="__codelineno-0-44"></a>
1440
-<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> Returns:</span>
1441
-<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> json: A JSON response containing the list of notes for the case.</span>
1442
-<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> """</span>
1443
-<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="n">case_service</span> <span class="o">=</span> <span class="n">CasesService</span><span class="p">()</span>
1444
-<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="n">notes_service</span> <span class="o">=</span> <span class="n">NotesService</span><span class="p">()</span>
1445
-<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">notes</span> <span class="o">=</span> <span class="n">notes_service</span><span class="o">.</span><span class="n">get_case_notes</span><span class="p">(</span><span class="n">case_id</span><span class="o">=</span><span class="n">case_id</span><span class="p">)</span>
1446
-<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="k">return</span> <span class="n">notes</span>
1434
+<span class="normal"><a href="#__codelineno-0-51">51</a></span>
1435
+<span class="normal"><a href="#__codelineno-0-52">52</a></span>
1436
+<span class="normal"><a href="#__codelineno-0-53">53</a></span>
1437
+<span class="normal"><a href="#__codelineno-0-54">54</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/dfir_iris/cases/<case_id>/notes"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1438
+<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="k">def</span> <span class="nf">get_case_notes</span><span class="p">(</span><span class="n">case_id</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span>
1439
+<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="w"> </span><span class="sd">"""</span>
1440
+<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> Endpoint to retrieve notes of a specific case from DFIR IRIS.</span>
1441
+<a id="__codelineno-0-45" name="__codelineno-0-45"></a>
1442
+<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> Args:</span>
1443
+<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> case_id (str): The ID of the case to retrieve notes from.</span>
1444
+<a id="__codelineno-0-48" name="__codelineno-0-48"></a>
1445
+<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="sd"> Returns:</span>
1446
+<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="sd"> json: A JSON response containing the list of notes for the case.</span>
1447
+<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> """</span>
1448
+<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="n">notes_service</span> <span class="o">=</span> <span class="n">NotesService</span><span class="p">()</span>
1449
+<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">notes</span> <span class="o">=</span> <span class="n">notes_service</span><span class="o">.</span><span class="n">get_case_notes</span><span class="p">(</span><span class="n">search_term</span><span class="o">=</span><span class="s2">"%"</span><span class="p">,</span> <span class="n">cid</span><span class="o">=</span><span class="n">case_id</span><span class="p">)</span>
1450
+<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="k">return</span> <span class="n">notes</span>
1451
</code></pre></div></td></tr></table></div>
1452
</details>
1453
</div>
@@ -1487,9 +1491,7 @@ This class inherits from SQLAlchemy's Model class.</p>
1491
1492
<details class="quote">
1493
<summary>Source code in <code>app\routes\dfir_iris.py</code></summary>
1490
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-10">10</a></span>
1491
-<span class="normal"><a href="#__codelineno-0-11">11</a></span>
1492
-<span class="normal"><a href="#__codelineno-0-12">12</a></span>
1494
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-12">12</a></span>
1495
<span class="normal"><a href="#__codelineno-0-13">13</a></span>
1496
<span class="normal"><a href="#__codelineno-0-14">14</a></span>
1497
<span class="normal"><a href="#__codelineno-0-15">15</a></span>
@@ -1497,17 +1499,19 @@ This class inherits from SQLAlchemy's Model class.</p>
1499
<span class="normal"><a href="#__codelineno-0-17">17</a></span>
1500
<span class="normal"><a href="#__codelineno-0-18">18</a></span>
1501
<span class="normal"><a href="#__codelineno-0-19">19</a></span>
1500
-<span class="normal"><a href="#__codelineno-0-20">20</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/dfir_iris/cases"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1501
-<a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="k">def</span> <span class="nf">get_cases</span><span class="p">():</span>
1502
-<a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="w"> </span><span class="sd">"""</span>
1503
-<a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="sd"> Endpoint to retrieve all the cases from DFIR IRIS.</span>
1504
-<a id="__codelineno-0-14" name="__codelineno-0-14"></a>
1505
-<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> Returns:</span>
1506
-<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> json: A JSON response containing the list of cases.</span>
1507
-<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> """</span>
1508
-<a id="__codelineno-0-18" name="__codelineno-0-18"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">CasesService</span><span class="p">()</span>
1509
-<a id="__codelineno-0-19" name="__codelineno-0-19"></a> <span class="n">cases</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">list_cases</span><span class="p">()</span>
1510
-<a id="__codelineno-0-20" name="__codelineno-0-20"></a> <span class="k">return</span> <span class="n">cases</span>
1502
+<span class="normal"><a href="#__codelineno-0-20">20</a></span>
1503
+<span class="normal"><a href="#__codelineno-0-21">21</a></span>
1504
+<span class="normal"><a href="#__codelineno-0-22">22</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/dfir_iris/cases"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
1505
+<a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="k">def</span> <span class="nf">get_cases</span><span class="p">():</span>
1506
+<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="w"> </span><span class="sd">"""</span>
1507
+<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> Endpoint to retrieve all the cases from DFIR IRIS.</span>
1508
+<a id="__codelineno-0-16" name="__codelineno-0-16"></a>
1509
+<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> Returns:</span>
1510
+<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> json: A JSON response containing the list of cases.</span>
1511
+<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> """</span>
1512
+<a id="__codelineno-0-20" name="__codelineno-0-20"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">CasesService</span><span class="p">()</span>
1513
+<a id="__codelineno-0-21" name="__codelineno-0-21"></a> <span class="n">cases</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">list_cases</span><span class="p">()</span>
1514
+<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="k">return</span> <span class="n">cases</span>
1515
</code></pre></div></td></tr></table></div>
1516
</details>
1517
</div>
backend/site/connectors/index.html
+82
-82
@@ -3361,9 +3361,7 @@ the cluster's health.</p>
3361
3362
<details class="quote">
3363
<summary>Source code in <code>app\routes\connectors.py</code></summary>
3364
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-34">34</a></span>
3365
-<span class="normal"><a href="#__codelineno-0-35">35</a></span>
3366
-<span class="normal"><a href="#__codelineno-0-36">36</a></span>
3364
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-36">36</a></span>
3365
<span class="normal"><a href="#__codelineno-0-37">37</a></span>
3366
<span class="normal"><a href="#__codelineno-0-38">38</a></span>
3367
<span class="normal"><a href="#__codelineno-0-39">39</a></span>
@@ -3380,26 +3378,28 @@ the cluster's health.</p>
3378
<span class="normal"><a href="#__codelineno-0-50">50</a></span>
3379
<span class="normal"><a href="#__codelineno-0-51">51</a></span>
3380
<span class="normal"><a href="#__codelineno-0-52">52</a></span>
3383
-<span class="normal"><a href="#__codelineno-0-53">53</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/connectors/<id>"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
3384
-<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="k">def</span> <span class="nf">get_connector_details</span><span class="p">(</span><span class="nb">id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
3385
-<a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="w"> </span><span class="sd">"""</span>
3386
-<a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="sd"> Endpoint to retrieve the details of a connector.</span>
3387
-<a id="__codelineno-0-38" name="__codelineno-0-38"></a>
3388
-<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> Args:</span>
3389
-<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="sd"> id (str): The ID of the connector to retrieve.</span>
3390
-<a id="__codelineno-0-41" name="__codelineno-0-41"></a>
3391
-<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> Returns:</span>
3392
-<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> json: A JSON response containing the details of the connector.</span>
3393
-<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> """</span>
3394
-<a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">ConnectorService</span><span class="p">(</span><span class="n">db</span><span class="p">)</span>
3395
-<a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="n">connector</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">validate_connector_exists</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="nb">id</span><span class="p">))</span>
3396
-<a id="__codelineno-0-47" name="__codelineno-0-47"></a>
3397
-<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="k">if</span> <span class="n">connector</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
3398
-<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="n">connector</span> <span class="o">=</span> <span class="n">Connectors</span><span class="o">.</span><span class="n">query</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">id</span><span class="p">)</span>
3399
-<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">instantiated_connector</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">process_connector</span><span class="p">(</span><span class="n">connector</span><span class="o">.</span><span class="n">connector_name</span><span class="p">)</span>
3400
-<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">instantiated_connector</span><span class="p">)</span>
3401
-<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">else</span><span class="p">:</span>
3402
-<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">connector</span><span class="p">),</span> <span class="mi">404</span>
3381
+<span class="normal"><a href="#__codelineno-0-53">53</a></span>
3382
+<span class="normal"><a href="#__codelineno-0-54">54</a></span>
3383
+<span class="normal"><a href="#__codelineno-0-55">55</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/connectors/<id>"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
3384
+<a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="k">def</span> <span class="nf">get_connector_details</span><span class="p">(</span><span class="nb">id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
3385
+<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="w"> </span><span class="sd">"""</span>
3386
+<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> Endpoint to retrieve the details of a connector.</span>
3387
+<a id="__codelineno-0-40" name="__codelineno-0-40"></a>
3388
+<a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="sd"> Args:</span>
3389
+<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> id (str): The ID of the connector to retrieve.</span>
3390
+<a id="__codelineno-0-43" name="__codelineno-0-43"></a>
3391
+<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> Returns:</span>
3392
+<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="sd"> json: A JSON response containing the details of the connector.</span>
3393
+<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> """</span>
3394
+<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">ConnectorService</span><span class="p">(</span><span class="n">db</span><span class="p">)</span>
3395
+<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="n">connector</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">validate_connector_exists</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="nb">id</span><span class="p">))</span>
3396
+<a id="__codelineno-0-49" name="__codelineno-0-49"></a>
3397
+<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">if</span> <span class="n">connector</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
3398
+<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="n">connector</span> <span class="o">=</span> <span class="n">Connectors</span><span class="o">.</span><span class="n">query</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">id</span><span class="p">)</span>
3399
+<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="n">instantiated_connector</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">process_connector</span><span class="p">(</span><span class="n">connector</span><span class="o">.</span><span class="n">connector_name</span><span class="p">)</span>
3400
+<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">instantiated_connector</span><span class="p">)</span>
3401
+<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="k">else</span><span class="p">:</span>
3402
+<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">connector</span><span class="p">),</span> <span class="mi">404</span>
3403
</code></pre></div></td></tr></table></div>
3404
</details>
3405
</div>
@@ -3443,8 +3443,7 @@ the cluster's health.</p>
3443
3444
<details class="quote">
3445
<summary>Source code in <code>app\routes\connectors.py</code></summary>
3446
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-14">14</a></span>
3447
-<span class="normal"><a href="#__codelineno-0-15">15</a></span>
3446
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-15">15</a></span>
3447
<span class="normal"><a href="#__codelineno-0-16">16</a></span>
3448
<span class="normal"><a href="#__codelineno-0-17">17</a></span>
3449
<span class="normal"><a href="#__codelineno-0-18">18</a></span>
@@ -3461,25 +3460,26 @@ the cluster's health.</p>
3460
<span class="normal"><a href="#__codelineno-0-29">29</a></span>
3461
<span class="normal"><a href="#__codelineno-0-30">30</a></span>
3462
<span class="normal"><a href="#__codelineno-0-31">31</a></span>
3464
-<span class="normal"><a href="#__codelineno-0-32">32</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/connectors"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
3465
-<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="k">def</span> <span class="nf">list_connectors_available</span><span class="p">():</span>
3466
-<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="w"> </span><span class="sd">"""</span>
3467
-<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> Endpoint to retrieve all available connectors.</span>
3468
-<a id="__codelineno-0-18" name="__codelineno-0-18"></a>
3469
-<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> Returns:</span>
3470
-<a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> json: A JSON response containing the list of all available connectors along with their connection verification status.</span>
3471
-<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> """</span>
3472
-<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="n">connectors_service</span> <span class="o">=</span> <span class="n">ConnectorService</span><span class="p">(</span><span class="n">db</span><span class="p">)</span>
3473
-<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="n">connectors</span> <span class="o">=</span> <span class="n">ConnectorsAvailable</span><span class="o">.</span><span class="n">query</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
3474
-<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">connectors_available_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">connectors</span><span class="p">)</span>
3475
-<a id="__codelineno-0-25" name="__codelineno-0-25"></a>
3476
-<a id="__codelineno-0-26" name="__codelineno-0-26"></a> <span class="n">instantiated_connectors</span> <span class="o">=</span> <span class="p">[</span>
3477
-<a id="__codelineno-0-27" name="__codelineno-0-27"></a> <span class="n">connectors_service</span><span class="o">.</span><span class="n">process_connector</span><span class="p">(</span><span class="n">connector</span><span class="p">[</span><span class="s2">"connector_name"</span><span class="p">])</span>
3478
-<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="k">for</span> <span class="n">connector</span> <span class="ow">in</span> <span class="n">result</span>
3479
-<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="k">if</span> <span class="n">connectors_service</span><span class="o">.</span><span class="n">process_connector</span><span class="p">(</span><span class="n">connector</span><span class="p">[</span><span class="s2">"connector_name"</span><span class="p">])</span>
3480
-<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="p">]</span>
3481
-<a id="__codelineno-0-31" name="__codelineno-0-31"></a>
3482
-<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">instantiated_connectors</span><span class="p">)</span>
3463
+<span class="normal"><a href="#__codelineno-0-32">32</a></span>
3464
+<span class="normal"><a href="#__codelineno-0-33">33</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/connectors"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</span><span class="p">])</span>
3465
+<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="k">def</span> <span class="nf">list_connectors_available</span><span class="p">():</span>
3466
+<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="w"> </span><span class="sd">"""</span>
3467
+<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> Endpoint to retrieve all available connectors.</span>
3468
+<a id="__codelineno-0-19" name="__codelineno-0-19"></a>
3469
+<a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> Returns:</span>
3470
+<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> json: A JSON response containing the list of all available connectors along with their connection verification status.</span>
3471
+<a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="sd"> """</span>
3472
+<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="n">connectors_service</span> <span class="o">=</span> <span class="n">ConnectorService</span><span class="p">(</span><span class="n">db</span><span class="p">)</span>
3473
+<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="n">connectors</span> <span class="o">=</span> <span class="n">ConnectorsAvailable</span><span class="o">.</span><span class="n">query</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
3474
+<a id="__codelineno-0-25" name="__codelineno-0-25"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">connectors_available_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">connectors</span><span class="p">)</span>
3475
+<a id="__codelineno-0-26" name="__codelineno-0-26"></a>
3476
+<a id="__codelineno-0-27" name="__codelineno-0-27"></a> <span class="n">instantiated_connectors</span> <span class="o">=</span> <span class="p">[</span>
3477
+<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="n">connectors_service</span><span class="o">.</span><span class="n">process_connector</span><span class="p">(</span><span class="n">connector</span><span class="p">[</span><span class="s2">"connector_name"</span><span class="p">])</span>
3478
+<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="k">for</span> <span class="n">connector</span> <span class="ow">in</span> <span class="n">result</span>
3479
+<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="k">if</span> <span class="n">connectors_service</span><span class="o">.</span><span class="n">process_connector</span><span class="p">(</span><span class="n">connector</span><span class="p">[</span><span class="s2">"connector_name"</span><span class="p">])</span>
3480
+<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="p">]</span>
3481
+<a id="__codelineno-0-32" name="__codelineno-0-32"></a>
3482
+<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">instantiated_connectors</span><span class="p">)</span>
3483
</code></pre></div></td></tr></table></div>
3484
</details>
3485
</div>
@@ -3560,10 +3560,7 @@ the cluster's health.</p>
3560
3561
<details class="quote">
3562
<summary>Source code in <code>app\routes\connectors.py</code></summary>
3563
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-55">55</a></span>
3564
-<span class="normal"><a href="#__codelineno-0-56">56</a></span>
3565
-<span class="normal"><a href="#__codelineno-0-57">57</a></span>
3566
-<span class="normal"><a href="#__codelineno-0-58">58</a></span>
3563
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-58">58</a></span>
3564
<span class="normal"><a href="#__codelineno-0-59">59</a></span>
3565
<span class="normal"><a href="#__codelineno-0-60">60</a></span>
3566
<span class="normal"><a href="#__codelineno-0-61">61</a></span>
@@ -3594,41 +3591,44 @@ the cluster's health.</p>
3591
<span class="normal"><a href="#__codelineno-0-86">86</a></span>
3592
<span class="normal"><a href="#__codelineno-0-87">87</a></span>
3593
<span class="normal"><a href="#__codelineno-0-88">88</a></span>
3597
-<span class="normal"><a href="#__codelineno-0-89">89</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/connectors/<id>"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"PUT"</span><span class="p">])</span>
3598
-<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="k">def</span> <span class="nf">update_connector_route</span><span class="p">(</span><span class="nb">id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
3599
-<a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="w"> </span><span class="sd">"""</span>
3600
-<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> Endpoint to update the details of a connector.</span>
3601
-<a id="__codelineno-0-59" name="__codelineno-0-59"></a>
3602
-<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="sd"> Args:</span>
3603
-<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> id (str): The ID of the connector to update.</span>
3594
+<span class="normal"><a href="#__codelineno-0-89">89</a></span>
3595
+<span class="normal"><a href="#__codelineno-0-90">90</a></span>
3596
+<span class="normal"><a href="#__codelineno-0-91">91</a></span>
3597
+<span class="normal"><a href="#__codelineno-0-92">92</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">"/connectors/<id>"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"PUT"</span><span class="p">])</span>
3598
+<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="k">def</span> <span class="nf">update_connector_route</span><span class="p">(</span><span class="nb">id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
3599
+<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="w"> </span><span class="sd">"""</span>
3600
+<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> Endpoint to update the details of a connector.</span>
3601
<a id="__codelineno-0-62" name="__codelineno-0-62"></a>
3605
-<a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> Returns:</span>
3606
-<a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="sd"> json: A JSON response containing the success status of the update operation and a message indicating the status.</span>
3607
-<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="sd"> If the update operation was successful, it returns the connector name and the status of the connection verification.</span>
3608
-<a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="sd"> """</span>
3609
-<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="n">api_key_connector</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"Shuffle"</span><span class="p">,</span> <span class="s2">"DFIR-IRIS"</span><span class="p">,</span> <span class="s2">"Velociraptor"</span><span class="p">]</span>
3610
-<a id="__codelineno-0-68" name="__codelineno-0-68"></a>
3611
-<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="n">request_data</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">get_json</span><span class="p">()</span>
3612
-<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">ConnectorService</span><span class="p">(</span><span class="n">db</span><span class="p">)</span>
3613
-<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="n">connector</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">validate_connector_exists</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="nb">id</span><span class="p">))</span>
3614
-<a id="__codelineno-0-72" name="__codelineno-0-72"></a>
3615
-<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="k">if</span> <span class="n">connector</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
3616
-<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="k">if</span> <span class="n">connector</span><span class="p">[</span><span class="s2">"connector_name"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">api_key_connector</span><span class="p">:</span>
3617
-<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="n">data_validated</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">validate_request_data_api_key</span><span class="p">(</span><span class="n">request_data</span><span class="p">)</span>
3618
-<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="k">if</span> <span class="n">data_validated</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
3619
-<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="n">service</span><span class="o">.</span><span class="n">update_connector</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="nb">id</span><span class="p">),</span> <span class="n">request_data</span><span class="p">)</span>
3620
-<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="k">return</span> <span class="n">service</span><span class="o">.</span><span class="n">verify_connector_connection</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="nb">id</span><span class="p">))</span>
3621
-<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="k">else</span><span class="p">:</span>
3622
-<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">data_validated</span><span class="p">),</span> <span class="mi">400</span>
3623
-<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="k">else</span><span class="p">:</span>
3624
-<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="n">data_validated</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">validate_request_data</span><span class="p">(</span><span class="n">request_data</span><span class="p">)</span>
3625
-<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="k">if</span> <span class="n">data_validated</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
3626
-<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="n">service</span><span class="o">.</span><span class="n">update_connector</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="nb">id</span><span class="p">),</span> <span class="n">request_data</span><span class="p">)</span>
3627
-<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="k">return</span> <span class="n">service</span><span class="o">.</span><span class="n">verify_connector_connection</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="nb">id</span><span class="p">))</span>
3628
-<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="k">else</span><span class="p">:</span>
3629
-<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">data_validated</span><span class="p">),</span> <span class="mi">400</span>
3630
-<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="k">else</span><span class="p">:</span>
3631
-<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">connector</span><span class="p">),</span> <span class="mi">404</span>
3602
+<a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> Args:</span>
3603
+<a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="sd"> id (str): The ID of the connector to update.</span>
3604
+<a id="__codelineno-0-65" name="__codelineno-0-65"></a>
3605
+<a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="sd"> Returns:</span>
3606
+<a id="__codelineno-0-67" name="__codelineno-0-67"></a><span class="sd"> json: A JSON response containing the success status of the update operation and a message indicating the status.</span>
3607
+<a id="__codelineno-0-68" name="__codelineno-0-68"></a><span class="sd"> If the update operation was successful, it returns the connector name and the status of the connection verification.</span>
3608
+<a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="sd"> """</span>
3609
+<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="n">api_key_connector</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"Shuffle"</span><span class="p">,</span> <span class="s2">"DFIR-IRIS"</span><span class="p">,</span> <span class="s2">"Velociraptor"</span><span class="p">]</span>
3610
+<a id="__codelineno-0-71" name="__codelineno-0-71"></a>
3611
+<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="n">request_data</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">get_json</span><span class="p">()</span>
3612
+<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">ConnectorService</span><span class="p">(</span><span class="n">db</span><span class="p">)</span>
3613
+<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="n">connector</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">validate_connector_exists</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="nb">id</span><span class="p">))</span>
3614
+<a id="__codelineno-0-75" name="__codelineno-0-75"></a>
3615
+<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="k">if</span> <span class="n">connector</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
3616
+<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="k">if</span> <span class="n">connector</span><span class="p">[</span><span class="s2">"connector_name"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">api_key_connector</span><span class="p">:</span>
3617
+<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="n">data_validated</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">validate_request_data_api_key</span><span class="p">(</span><span class="n">request_data</span><span class="p">)</span>
3618
+<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="k">if</span> <span class="n">data_validated</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
3619
+<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="n">service</span><span class="o">.</span><span class="n">update_connector</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="nb">id</span><span class="p">),</span> <span class="n">request_data</span><span class="p">)</span>
3620
+<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="k">return</span> <span class="n">service</span><span class="o">.</span><span class="n">verify_connector_connection</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="nb">id</span><span class="p">))</span>
3621
+<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="k">else</span><span class="p">:</span>
3622
+<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">data_validated</span><span class="p">),</span> <span class="mi">400</span>
3623
+<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="k">else</span><span class="p">:</span>
3624
+<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="n">data_validated</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">validate_request_data</span><span class="p">(</span><span class="n">request_data</span><span class="p">)</span>
3625
+<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="k">if</span> <span class="n">data_validated</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
3626
+<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="n">service</span><span class="o">.</span><span class="n">update_connector</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="nb">id</span><span class="p">),</span> <span class="n">request_data</span><span class="p">)</span>
3627
+<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="k">return</span> <span class="n">service</span><span class="o">.</span><span class="n">verify_connector_connection</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="nb">id</span><span class="p">))</span>
3628
+<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="k">else</span><span class="p">:</span>
3629
+<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">data_validated</span><span class="p">),</span> <span class="mi">400</span>
3630
+<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="k">else</span><span class="p">:</span>
3631
+<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">connector</span><span class="p">),</span> <span class="mi">404</span>
3632
</code></pre></div></td></tr></table></div>
3633
</details>
3634
</div>
backend/site/graylog/index.html
+564
-526
@@ -2360,7 +2360,15 @@ This class inherits from SQLAlchemy's Model class.</p>
2360
<span class="normal"><a href="#__codelineno-0-127">127</a></span>
2361
<span class="normal"><a href="#__codelineno-0-128">128</a></span>
2362
<span class="normal"><a href="#__codelineno-0-129">129</a></span>
2363
-<span class="normal"><a href="#__codelineno-0-130">130</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="k">class</span> <span class="nc">InputsService</span><span class="p">:</span>
2363
+<span class="normal"><a href="#__codelineno-0-130">130</a></span>
2364
+<span class="normal"><a href="#__codelineno-0-131">131</a></span>
2365
+<span class="normal"><a href="#__codelineno-0-132">132</a></span>
2366
+<span class="normal"><a href="#__codelineno-0-133">133</a></span>
2367
+<span class="normal"><a href="#__codelineno-0-134">134</a></span>
2368
+<span class="normal"><a href="#__codelineno-0-135">135</a></span>
2369
+<span class="normal"><a href="#__codelineno-0-136">136</a></span>
2370
+<span class="normal"><a href="#__codelineno-0-137">137</a></span>
2371
+<span class="normal"><a href="#__codelineno-0-138">138</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="k">class</span> <span class="nc">InputsService</span><span class="p">:</span>
2372
<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="w"> </span><span class="sd">"""</span>
2373
<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> A service class that encapsulates the logic for pulling index data from Graylog</span>
2374
<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> """</span>
@@ -2377,106 +2385,114 @@ This class inherits from SQLAlchemy's Model class.</p>
2385
<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
2386
<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="p">)</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span><span class="o">.</span><span class="n">collect_graylog_details</span><span class="p">(</span><span class="s2">"Graylog"</span><span class="p">)</span>
2387
<a id="__codelineno-0-30" name="__codelineno-0-30"></a>
2380
-<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="k">def</span> <span class="nf">collect_running_inputs</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]]]]:</span>
2381
-<a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="w"> </span><span class="sd">"""</span>
2382
-<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="sd"> Collects the running inputs that are managed by Graylog.</span>
2383
-<a id="__codelineno-0-34" name="__codelineno-0-34"></a>
2384
-<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> Returns:</span>
2385
-<a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of running inputs.</span>
2386
-<a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="sd"> """</span>
2387
-<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="k">if</span> <span class="p">(</span>
2388
-<a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
2389
-<a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
2390
-<a id="__codelineno-0-41" name="__codelineno-0-41"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
2391
-<a id="__codelineno-0-42" name="__codelineno-0-42"></a> <span class="p">):</span>
2392
-<a id="__codelineno-0-43" name="__codelineno-0-43"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2393
-<a id="__codelineno-0-44" name="__codelineno-0-44"></a>
2394
-<a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="n">running_inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_running_inputs</span><span class="p">()</span>
2388
+<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="k">def</span> <span class="nf">collect_running_inputs</span><span class="p">(</span>
2389
+<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="bp">self</span><span class="p">,</span>
2390
+<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]]]]:</span>
2391
+<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="w"> </span><span class="sd">"""</span>
2392
+<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> Collects the running inputs that are managed by Graylog.</span>
2393
+<a id="__codelineno-0-36" name="__codelineno-0-36"></a>
2394
+<a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="sd"> Returns:</span>
2395
+<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of running inputs.</span>
2396
+<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> """</span>
2397
+<a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="k">if</span> <span class="p">(</span>
2398
+<a id="__codelineno-0-41" name="__codelineno-0-41"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
2399
+<a id="__codelineno-0-42" name="__codelineno-0-42"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
2400
+<a id="__codelineno-0-43" name="__codelineno-0-43"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
2401
+<a id="__codelineno-0-44" name="__codelineno-0-44"></a> <span class="p">):</span>
2402
+<a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2403
<a id="__codelineno-0-46" name="__codelineno-0-46"></a>
2396
-<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="k">if</span> <span class="n">running_inputs</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
2397
-<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="k">return</span> <span class="n">running_inputs</span>
2398
-<a id="__codelineno-0-49" name="__codelineno-0-49"></a>
2399
-<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">def</span> <span class="nf">_collect_running_inputs</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]]]]:</span>
2400
-<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="w"> </span><span class="sd">"""</span>
2401
-<a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="sd"> Collects the running inputs that are managed by Graylog.</span>
2402
-<a id="__codelineno-0-53" name="__codelineno-0-53"></a>
2403
-<a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="sd"> Returns:</span>
2404
-<a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of running inputs.</span>
2405
-<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> """</span>
2406
-<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="k">try</span><span class="p">:</span>
2407
-<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="n">running_inputs</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
2408
-<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/api/system/inputstates"</span><span class="p">,</span>
2409
-<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="n">headers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">HEADERS</span><span class="p">,</span>
2410
-<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">),</span>
2411
-<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
2412
-<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="p">)</span>
2413
-<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="n">inputs_list</span> <span class="o">=</span> <span class="p">[]</span>
2414
-<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="k">for</span> <span class="nb">input</span> <span class="ow">in</span> <span class="n">running_inputs</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">"states"</span><span class="p">]:</span>
2415
-<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="n">inputs_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
2416
-<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="p">{</span>
2417
-<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="s2">"state"</span><span class="p">:</span> <span class="nb">input</span><span class="p">[</span><span class="s2">"state"</span><span class="p">],</span>
2418
-<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="s2">"title"</span><span class="p">:</span> <span class="nb">input</span><span class="p">[</span><span class="s2">"message_input"</span><span class="p">][</span><span class="s2">"title"</span><span class="p">],</span>
2419
-<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="s2">"port"</span><span class="p">:</span> <span class="nb">input</span><span class="p">[</span><span class="s2">"message_input"</span><span class="p">][</span><span class="s2">"attributes"</span><span class="p">][</span><span class="s2">"port"</span><span class="p">],</span>
2420
-<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="p">},</span>
2421
-<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="p">)</span>
2422
-<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="k">return</span> <span class="p">{</span>
2423
-<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully collected running inputs"</span><span class="p">,</span>
2424
-<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
2425
-<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="s2">"inputs"</span><span class="p">:</span> <span class="n">inputs_list</span><span class="p">,</span>
2426
-<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="p">}</span>
2427
-<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2428
-<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect running inputs: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2429
-<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect running inputs"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2430
-<a id="__codelineno-0-81" name="__codelineno-0-81"></a>
2431
-<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="k">def</span> <span class="nf">collect_configured_inputs</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]]]]:</span>
2432
-<a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="w"> </span><span class="sd">"""</span>
2433
-<a id="__codelineno-0-84" name="__codelineno-0-84"></a><span class="sd"> Collects the configured inputs that are managed by Graylog.</span>
2404
+<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="n">running_inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_running_inputs</span><span class="p">()</span>
2405
+<a id="__codelineno-0-48" name="__codelineno-0-48"></a>
2406
+<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">if</span> <span class="n">running_inputs</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
2407
+<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">return</span> <span class="n">running_inputs</span>
2408
+<a id="__codelineno-0-51" name="__codelineno-0-51"></a>
2409
+<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">def</span> <span class="nf">_collect_running_inputs</span><span class="p">(</span>
2410
+<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="bp">self</span><span class="p">,</span>
2411
+<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]]]]:</span>
2412
+<a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="w"> </span><span class="sd">"""</span>
2413
+<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> Collects the running inputs that are managed by Graylog.</span>
2414
+<a id="__codelineno-0-57" name="__codelineno-0-57"></a>
2415
+<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> Returns:</span>
2416
+<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of running inputs.</span>
2417
+<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="sd"> """</span>
2418
+<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="k">try</span><span class="p">:</span>
2419
+<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="n">running_inputs</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
2420
+<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/api/system/inputstates"</span><span class="p">,</span>
2421
+<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="n">headers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">HEADERS</span><span class="p">,</span>
2422
+<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">),</span>
2423
+<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
2424
+<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="p">)</span>
2425
+<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="n">inputs_list</span> <span class="o">=</span> <span class="p">[]</span>
2426
+<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="k">for</span> <span class="nb">input</span> <span class="ow">in</span> <span class="n">running_inputs</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">"states"</span><span class="p">]:</span>
2427
+<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="n">inputs_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
2428
+<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="p">{</span>
2429
+<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="s2">"state"</span><span class="p">:</span> <span class="nb">input</span><span class="p">[</span><span class="s2">"state"</span><span class="p">],</span>
2430
+<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="s2">"title"</span><span class="p">:</span> <span class="nb">input</span><span class="p">[</span><span class="s2">"message_input"</span><span class="p">][</span><span class="s2">"title"</span><span class="p">],</span>
2431
+<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="s2">"port"</span><span class="p">:</span> <span class="nb">input</span><span class="p">[</span><span class="s2">"message_input"</span><span class="p">][</span><span class="s2">"attributes"</span><span class="p">][</span><span class="s2">"port"</span><span class="p">],</span>
2432
+<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="p">},</span>
2433
+<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="p">)</span>
2434
+<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="k">return</span> <span class="p">{</span>
2435
+<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully collected running inputs"</span><span class="p">,</span>
2436
+<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
2437
+<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="s2">"inputs"</span><span class="p">:</span> <span class="n">inputs_list</span><span class="p">,</span>
2438
+<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="p">}</span>
2439
+<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2440
+<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect running inputs: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2441
+<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect running inputs"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2442
<a id="__codelineno-0-85" name="__codelineno-0-85"></a>
2435
-<a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="sd"> Returns:</span>
2436
-<a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of configured inputs.</span>
2437
-<a id="__codelineno-0-88" name="__codelineno-0-88"></a><span class="sd"> """</span>
2438
-<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="k">if</span> <span class="p">(</span>
2439
-<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
2440
-<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
2441
-<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
2442
-<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="p">):</span>
2443
-<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2444
-<a id="__codelineno-0-95" name="__codelineno-0-95"></a>
2445
-<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="n">configured_inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_configured_inputs</span><span class="p">()</span>
2446
-<a id="__codelineno-0-97" name="__codelineno-0-97"></a>
2447
-<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="k">if</span> <span class="n">configured_inputs</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
2448
-<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="k">return</span> <span class="n">configured_inputs</span>
2449
-<a id="__codelineno-0-100" name="__codelineno-0-100"></a>
2450
-<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="k">def</span> <span class="nf">_collect_configured_inputs</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]]]]:</span>
2451
-<a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="w"> </span><span class="sd">"""</span>
2452
-<a id="__codelineno-0-103" name="__codelineno-0-103"></a><span class="sd"> Collects the configured inputs that are managed by Graylog.</span>
2453
-<a id="__codelineno-0-104" name="__codelineno-0-104"></a>
2454
-<a id="__codelineno-0-105" name="__codelineno-0-105"></a><span class="sd"> Returns:</span>
2455
-<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of configured inputs.</span>
2456
-<a id="__codelineno-0-107" name="__codelineno-0-107"></a><span class="sd"> """</span>
2457
-<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="k">try</span><span class="p">:</span>
2458
-<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="n">configured_inputs</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
2459
-<a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/api/system/inputs"</span><span class="p">,</span>
2460
-<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="n">headers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">HEADERS</span><span class="p">,</span>
2461
-<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">),</span>
2462
-<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
2463
-<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="p">)</span>
2464
-<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="n">configured_inputs_list</span> <span class="o">=</span> <span class="p">[]</span>
2465
-<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="k">for</span> <span class="nb">input</span> <span class="ow">in</span> <span class="n">configured_inputs</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">"inputs"</span><span class="p">]:</span>
2466
-<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="n">configured_inputs_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
2467
-<a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="p">{</span>
2468
-<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="s2">"title"</span><span class="p">:</span> <span class="nb">input</span><span class="p">[</span><span class="s2">"title"</span><span class="p">],</span>
2469
-<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="s2">"port"</span><span class="p">:</span> <span class="nb">input</span><span class="p">[</span><span class="s2">"attributes"</span><span class="p">][</span><span class="s2">"port"</span><span class="p">],</span>
2470
-<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="p">},</span>
2471
-<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="p">)</span>
2472
-<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="k">return</span> <span class="p">{</span>
2473
-<a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully collected configured inputs"</span><span class="p">,</span>
2474
-<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
2475
-<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="s2">"configured_inputs"</span><span class="p">:</span> <span class="n">configured_inputs_list</span><span class="p">,</span>
2476
-<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="p">}</span>
2477
-<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2478
-<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect configured inputs: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2479
-<a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect configured inputs"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2443
+<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="k">def</span> <span class="nf">collect_configured_inputs</span><span class="p">(</span>
2444
+<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="bp">self</span><span class="p">,</span>
2445
+<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]]]]:</span>
2446
+<a id="__codelineno-0-89" name="__codelineno-0-89"></a><span class="w"> </span><span class="sd">"""</span>
2447
+<a id="__codelineno-0-90" name="__codelineno-0-90"></a><span class="sd"> Collects the configured inputs that are managed by Graylog.</span>
2448
+<a id="__codelineno-0-91" name="__codelineno-0-91"></a>
2449
+<a id="__codelineno-0-92" name="__codelineno-0-92"></a><span class="sd"> Returns:</span>
2450
+<a id="__codelineno-0-93" name="__codelineno-0-93"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of configured inputs.</span>
2451
+<a id="__codelineno-0-94" name="__codelineno-0-94"></a><span class="sd"> """</span>
2452
+<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="k">if</span> <span class="p">(</span>
2453
+<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
2454
+<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
2455
+<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
2456
+<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="p">):</span>
2457
+<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2458
+<a id="__codelineno-0-101" name="__codelineno-0-101"></a>
2459
+<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="n">configured_inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_configured_inputs</span><span class="p">()</span>
2460
+<a id="__codelineno-0-103" name="__codelineno-0-103"></a>
2461
+<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="k">if</span> <span class="n">configured_inputs</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
2462
+<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="k">return</span> <span class="n">configured_inputs</span>
2463
+<a id="__codelineno-0-106" name="__codelineno-0-106"></a>
2464
+<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="k">def</span> <span class="nf">_collect_configured_inputs</span><span class="p">(</span>
2465
+<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="bp">self</span><span class="p">,</span>
2466
+<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]]]]:</span>
2467
+<a id="__codelineno-0-110" name="__codelineno-0-110"></a><span class="w"> </span><span class="sd">"""</span>
2468
+<a id="__codelineno-0-111" name="__codelineno-0-111"></a><span class="sd"> Collects the configured inputs that are managed by Graylog.</span>
2469
+<a id="__codelineno-0-112" name="__codelineno-0-112"></a>
2470
+<a id="__codelineno-0-113" name="__codelineno-0-113"></a><span class="sd"> Returns:</span>
2471
+<a id="__codelineno-0-114" name="__codelineno-0-114"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of configured inputs.</span>
2472
+<a id="__codelineno-0-115" name="__codelineno-0-115"></a><span class="sd"> """</span>
2473
+<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="k">try</span><span class="p">:</span>
2474
+<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="n">configured_inputs</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
2475
+<a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/api/system/inputs"</span><span class="p">,</span>
2476
+<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="n">headers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">HEADERS</span><span class="p">,</span>
2477
+<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">),</span>
2478
+<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
2479
+<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="p">)</span>
2480
+<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="n">configured_inputs_list</span> <span class="o">=</span> <span class="p">[]</span>
2481
+<a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="k">for</span> <span class="nb">input</span> <span class="ow">in</span> <span class="n">configured_inputs</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">"inputs"</span><span class="p">]:</span>
2482
+<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="n">configured_inputs_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
2483
+<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="p">{</span>
2484
+<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="s2">"title"</span><span class="p">:</span> <span class="nb">input</span><span class="p">[</span><span class="s2">"title"</span><span class="p">],</span>
2485
+<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="s2">"port"</span><span class="p">:</span> <span class="nb">input</span><span class="p">[</span><span class="s2">"attributes"</span><span class="p">][</span><span class="s2">"port"</span><span class="p">],</span>
2486
+<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="p">},</span>
2487
+<a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="p">)</span>
2488
+<a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="k">return</span> <span class="p">{</span>
2489
+<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully collected configured inputs"</span><span class="p">,</span>
2490
+<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
2491
+<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="s2">"configured_inputs"</span><span class="p">:</span> <span class="n">configured_inputs_list</span><span class="p">,</span>
2492
+<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="p">}</span>
2493
+<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2494
+<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect configured inputs: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2495
+<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect configured inputs"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2496
</code></pre></div></td></tr></table></div>
2497
</details>
2498
@@ -2569,41 +2585,45 @@ This class inherits from SQLAlchemy's Model class.</p>
2585
2586
<details class="quote">
2587
<summary>Source code in <code>app\services\Graylog\inputs.py</code></summary>
2572
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-82">82</a></span>
2573
-<span class="normal"><a href="#__codelineno-0-83">83</a></span>
2574
-<span class="normal"><a href="#__codelineno-0-84">84</a></span>
2575
-<span class="normal"><a href="#__codelineno-0-85">85</a></span>
2576
-<span class="normal"><a href="#__codelineno-0-86">86</a></span>
2577
-<span class="normal"><a href="#__codelineno-0-87">87</a></span>
2578
-<span class="normal"><a href="#__codelineno-0-88">88</a></span>
2579
-<span class="normal"><a href="#__codelineno-0-89">89</a></span>
2580
-<span class="normal"><a href="#__codelineno-0-90">90</a></span>
2581
-<span class="normal"><a href="#__codelineno-0-91">91</a></span>
2582
-<span class="normal"><a href="#__codelineno-0-92">92</a></span>
2583
-<span class="normal"><a href="#__codelineno-0-93">93</a></span>
2584
-<span class="normal"><a href="#__codelineno-0-94">94</a></span>
2585
-<span class="normal"><a href="#__codelineno-0-95">95</a></span>
2586
-<span class="normal"><a href="#__codelineno-0-96">96</a></span>
2587
-<span class="normal"><a href="#__codelineno-0-97">97</a></span>
2588
-<span class="normal"><a href="#__codelineno-0-98">98</a></span>
2589
-<span class="normal"><a href="#__codelineno-0-99">99</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="k">def</span> <span class="nf">collect_configured_inputs</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]]]]:</span>
2590
-<a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="w"> </span><span class="sd">"""</span>
2591
-<a id="__codelineno-0-84" name="__codelineno-0-84"></a><span class="sd"> Collects the configured inputs that are managed by Graylog.</span>
2592
-<a id="__codelineno-0-85" name="__codelineno-0-85"></a>
2593
-<a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="sd"> Returns:</span>
2594
-<a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of configured inputs.</span>
2595
-<a id="__codelineno-0-88" name="__codelineno-0-88"></a><span class="sd"> """</span>
2596
-<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="k">if</span> <span class="p">(</span>
2597
-<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
2598
-<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
2599
-<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
2600
-<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="p">):</span>
2601
-<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2602
-<a id="__codelineno-0-95" name="__codelineno-0-95"></a>
2603
-<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="n">configured_inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_configured_inputs</span><span class="p">()</span>
2604
-<a id="__codelineno-0-97" name="__codelineno-0-97"></a>
2605
-<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="k">if</span> <span class="n">configured_inputs</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
2606
-<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="k">return</span> <span class="n">configured_inputs</span>
2588
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-86"> 86</a></span>
2589
+<span class="normal"><a href="#__codelineno-0-87"> 87</a></span>
2590
+<span class="normal"><a href="#__codelineno-0-88"> 88</a></span>
2591
+<span class="normal"><a href="#__codelineno-0-89"> 89</a></span>
2592
+<span class="normal"><a href="#__codelineno-0-90"> 90</a></span>
2593
+<span class="normal"><a href="#__codelineno-0-91"> 91</a></span>
2594
+<span class="normal"><a href="#__codelineno-0-92"> 92</a></span>
2595
+<span class="normal"><a href="#__codelineno-0-93"> 93</a></span>
2596
+<span class="normal"><a href="#__codelineno-0-94"> 94</a></span>
2597
+<span class="normal"><a href="#__codelineno-0-95"> 95</a></span>
2598
+<span class="normal"><a href="#__codelineno-0-96"> 96</a></span>
2599
+<span class="normal"><a href="#__codelineno-0-97"> 97</a></span>
2600
+<span class="normal"><a href="#__codelineno-0-98"> 98</a></span>
2601
+<span class="normal"><a href="#__codelineno-0-99"> 99</a></span>
2602
+<span class="normal"><a href="#__codelineno-0-100">100</a></span>
2603
+<span class="normal"><a href="#__codelineno-0-101">101</a></span>
2604
+<span class="normal"><a href="#__codelineno-0-102">102</a></span>
2605
+<span class="normal"><a href="#__codelineno-0-103">103</a></span>
2606
+<span class="normal"><a href="#__codelineno-0-104">104</a></span>
2607
+<span class="normal"><a href="#__codelineno-0-105">105</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="k">def</span> <span class="nf">collect_configured_inputs</span><span class="p">(</span>
2608
+<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="bp">self</span><span class="p">,</span>
2609
+<a id="__codelineno-0-88" name="__codelineno-0-88"></a><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]]]]:</span>
2610
+<a id="__codelineno-0-89" name="__codelineno-0-89"></a><span class="w"> </span><span class="sd">"""</span>
2611
+<a id="__codelineno-0-90" name="__codelineno-0-90"></a><span class="sd"> Collects the configured inputs that are managed by Graylog.</span>
2612
+<a id="__codelineno-0-91" name="__codelineno-0-91"></a>
2613
+<a id="__codelineno-0-92" name="__codelineno-0-92"></a><span class="sd"> Returns:</span>
2614
+<a id="__codelineno-0-93" name="__codelineno-0-93"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of configured inputs.</span>
2615
+<a id="__codelineno-0-94" name="__codelineno-0-94"></a><span class="sd"> """</span>
2616
+<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="k">if</span> <span class="p">(</span>
2617
+<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
2618
+<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
2619
+<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
2620
+<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="p">):</span>
2621
+<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2622
+<a id="__codelineno-0-101" name="__codelineno-0-101"></a>
2623
+<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="n">configured_inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_configured_inputs</span><span class="p">()</span>
2624
+<a id="__codelineno-0-103" name="__codelineno-0-103"></a>
2625
+<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="k">if</span> <span class="n">configured_inputs</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
2626
+<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="k">return</span> <span class="n">configured_inputs</span>
2627
</code></pre></div></td></tr></table></div>
2628
</details>
2629
</div>
@@ -2665,24 +2685,28 @@ This class inherits from SQLAlchemy's Model class.</p>
2685
<span class="normal"><a href="#__codelineno-0-45">45</a></span>
2686
<span class="normal"><a href="#__codelineno-0-46">46</a></span>
2687
<span class="normal"><a href="#__codelineno-0-47">47</a></span>
2668
-<span class="normal"><a href="#__codelineno-0-48">48</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="k">def</span> <span class="nf">collect_running_inputs</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]]]]:</span>
2669
-<a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="w"> </span><span class="sd">"""</span>
2670
-<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="sd"> Collects the running inputs that are managed by Graylog.</span>
2671
-<a id="__codelineno-0-34" name="__codelineno-0-34"></a>
2672
-<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> Returns:</span>
2673
-<a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of running inputs.</span>
2674
-<a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="sd"> """</span>
2675
-<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="k">if</span> <span class="p">(</span>
2676
-<a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
2677
-<a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
2678
-<a id="__codelineno-0-41" name="__codelineno-0-41"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
2679
-<a id="__codelineno-0-42" name="__codelineno-0-42"></a> <span class="p">):</span>
2680
-<a id="__codelineno-0-43" name="__codelineno-0-43"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2681
-<a id="__codelineno-0-44" name="__codelineno-0-44"></a>
2682
-<a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="n">running_inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_running_inputs</span><span class="p">()</span>
2688
+<span class="normal"><a href="#__codelineno-0-48">48</a></span>
2689
+<span class="normal"><a href="#__codelineno-0-49">49</a></span>
2690
+<span class="normal"><a href="#__codelineno-0-50">50</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="k">def</span> <span class="nf">collect_running_inputs</span><span class="p">(</span>
2691
+<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="bp">self</span><span class="p">,</span>
2692
+<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]]]]:</span>
2693
+<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="w"> </span><span class="sd">"""</span>
2694
+<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> Collects the running inputs that are managed by Graylog.</span>
2695
+<a id="__codelineno-0-36" name="__codelineno-0-36"></a>
2696
+<a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="sd"> Returns:</span>
2697
+<a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of running inputs.</span>
2698
+<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="sd"> """</span>
2699
+<a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="k">if</span> <span class="p">(</span>
2700
+<a id="__codelineno-0-41" name="__codelineno-0-41"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
2701
+<a id="__codelineno-0-42" name="__codelineno-0-42"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
2702
+<a id="__codelineno-0-43" name="__codelineno-0-43"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
2703
+<a id="__codelineno-0-44" name="__codelineno-0-44"></a> <span class="p">):</span>
2704
+<a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2705
<a id="__codelineno-0-46" name="__codelineno-0-46"></a>
2684
-<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="k">if</span> <span class="n">running_inputs</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
2685
-<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="k">return</span> <span class="n">running_inputs</span>
2706
+<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="n">running_inputs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_running_inputs</span><span class="p">()</span>
2707
+<a id="__codelineno-0-48" name="__codelineno-0-48"></a>
2708
+<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">if</span> <span class="n">running_inputs</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]:</span>
2709
+<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">return</span> <span class="n">running_inputs</span>
2710
</code></pre></div></td></tr></table></div>
2711
</details>
2712
</div>
@@ -2742,10 +2766,7 @@ This class inherits from SQLAlchemy's Model class.</p>
2766
2767
<details class="quote">
2768
<summary>Source code in <code>app\services\Graylog\messages.py</code></summary>
2745
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-10">10</a></span>
2746
-<span class="normal"><a href="#__codelineno-0-11">11</a></span>
2747
-<span class="normal"><a href="#__codelineno-0-12">12</a></span>
2748
-<span class="normal"><a href="#__codelineno-0-13">13</a></span>
2769
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-13">13</a></span>
2770
<span class="normal"><a href="#__codelineno-0-14">14</a></span>
2771
<span class="normal"><a href="#__codelineno-0-15">15</a></span>
2772
<span class="normal"><a href="#__codelineno-0-16">16</a></span>
@@ -2806,71 +2827,80 @@ This class inherits from SQLAlchemy's Model class.</p>
2827
<span class="normal"><a href="#__codelineno-0-71">71</a></span>
2828
<span class="normal"><a href="#__codelineno-0-72">72</a></span>
2829
<span class="normal"><a href="#__codelineno-0-73">73</a></span>
2809
-<span class="normal"><a href="#__codelineno-0-74">74</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="k">class</span> <span class="nc">MessagesService</span><span class="p">:</span>
2810
-<a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="w"> </span><span class="sd">"""</span>
2811
-<a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="sd"> A service class that encapsulates the logic for polling messages from Graylog.</span>
2812
-<a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="sd"> """</span>
2813
-<a id="__codelineno-0-14" name="__codelineno-0-14"></a>
2814
-<a id="__codelineno-0-15" name="__codelineno-0-15"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
2815
-<a id="__codelineno-0-16" name="__codelineno-0-16"></a> <span class="p">(</span>
2816
-<a id="__codelineno-0-17" name="__codelineno-0-17"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
2817
-<a id="__codelineno-0-18" name="__codelineno-0-18"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
2818
-<a id="__codelineno-0-19" name="__codelineno-0-19"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
2819
-<a id="__codelineno-0-20" name="__codelineno-0-20"></a> <span class="p">)</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span><span class="o">.</span><span class="n">collect_graylog_details</span><span class="p">(</span><span class="s2">"Graylog"</span><span class="p">)</span>
2820
-<a id="__codelineno-0-21" name="__codelineno-0-21"></a>
2821
-<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="k">def</span> <span class="nf">_get_messages_from_graylog</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page_number</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">requests</span><span class="o">.</span><span class="n">Response</span><span class="p">:</span>
2822
-<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="w"> </span><span class="sd">"""Fetches messages from Graylog for a specific page number."""</span>
2823
-<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="k">return</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
2824
-<a id="__codelineno-0-25" name="__codelineno-0-25"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/api/system/messages?page=</span><span class="si">{</span><span class="n">page_number</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
2825
-<a id="__codelineno-0-26" name="__codelineno-0-26"></a> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">),</span>
2826
-<a id="__codelineno-0-27" name="__codelineno-0-27"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
2827
-<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="p">)</span>
2828
-<a id="__codelineno-0-29" name="__codelineno-0-29"></a>
2829
-<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="k">def</span> <span class="nf">_handle_message_fetch_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">error</span><span class="p">:</span> <span class="ne">Exception</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2830
-<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="w"> </span><span class="sd">"""Handles exceptions occurred while fetching messages."""</span>
2831
-<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect messages from Graylog: </span><span class="si">{</span><span class="n">error</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2832
-<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="k">return</span> <span class="p">{</span>
2833
-<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect messages from Graylog"</span><span class="p">,</span>
2834
-<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2835
-<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="p">}</span>
2836
-<a id="__codelineno-0-37" name="__codelineno-0-37"></a>
2837
-<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="k">def</span> <span class="nf">collect_messages</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]]]:</span>
2838
-<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="w"> </span><span class="sd">"""</span>
2839
-<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="sd"> Collects the latest 10 messages from Graylog.</span>
2840
-<a id="__codelineno-0-41" name="__codelineno-0-41"></a>
2841
-<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> Returns:</span>
2842
-<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of Graylog messages.</span>
2843
-<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> """</span>
2844
-<a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="k">if</span> <span class="p">(</span>
2845
-<a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
2846
-<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
2847
-<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
2848
-<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="p">):</span>
2849
-<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2850
-<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="k">else</span><span class="p">:</span>
2851
-<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">try</span><span class="p">:</span>
2852
-<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">page_number</span> <span class="o">=</span> <span class="mi">1</span>
2853
-<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="n">graylog_messages</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_messages_from_graylog</span><span class="p">(</span><span class="n">page_number</span><span class="p">)</span>
2854
-<a id="__codelineno-0-55" name="__codelineno-0-55"></a>
2855
-<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="k">if</span> <span class="n">graylog_messages</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
2856
-<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
2857
-<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="sa">f</span><span class="s2">"Received </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">graylog_messages</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s1">'messages'</span><span class="p">])</span><span class="si">}</span><span class="s2"> messages from Graylog"</span><span class="p">,</span>
2858
-<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="p">)</span>
2859
-<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="k">return</span> <span class="p">{</span>
2860
-<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully retrieved messages"</span><span class="p">,</span>
2861
-<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
2862
-<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="s2">"graylog_messages"</span><span class="p">:</span> <span class="n">graylog_messages</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">"messages"</span><span class="p">],</span>
2863
-<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="p">}</span>
2864
-<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="k">else</span><span class="p">:</span>
2865
-<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span>
2866
-<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="sa">f</span><span class="s2">"Failed to collect messages from Graylog: </span><span class="si">{</span><span class="n">graylog_messages</span><span class="o">.</span><span class="n">json</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
2867
-<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="p">)</span>
2868
-<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="k">return</span> <span class="p">{</span>
2869
-<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect messages from Graylog"</span><span class="p">,</span>
2870
-<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2871
-<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="p">}</span>
2872
-<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2873
-<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_message_fetch_error</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
2830
+<span class="normal"><a href="#__codelineno-0-74">74</a></span>
2831
+<span class="normal"><a href="#__codelineno-0-75">75</a></span>
2832
+<span class="normal"><a href="#__codelineno-0-76">76</a></span>
2833
+<span class="normal"><a href="#__codelineno-0-77">77</a></span>
2834
+<span class="normal"><a href="#__codelineno-0-78">78</a></span>
2835
+<span class="normal"><a href="#__codelineno-0-79">79</a></span>
2836
+<span class="normal"><a href="#__codelineno-0-80">80</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="k">class</span> <span class="nc">MessagesService</span><span class="p">:</span>
2837
+<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="w"> </span><span class="sd">"""</span>
2838
+<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> A service class that encapsulates the logic for polling messages from Graylog.</span>
2839
+<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> """</span>
2840
+<a id="__codelineno-0-17" name="__codelineno-0-17"></a>
2841
+<a id="__codelineno-0-18" name="__codelineno-0-18"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
2842
+<a id="__codelineno-0-19" name="__codelineno-0-19"></a> <span class="p">(</span>
2843
+<a id="__codelineno-0-20" name="__codelineno-0-20"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
2844
+<a id="__codelineno-0-21" name="__codelineno-0-21"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
2845
+<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
2846
+<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="p">)</span> <span class="o">=</span> <span class="n">UniversalService</span><span class="p">()</span><span class="o">.</span><span class="n">collect_graylog_details</span><span class="p">(</span><span class="s2">"Graylog"</span><span class="p">)</span>
2847
+<a id="__codelineno-0-24" name="__codelineno-0-24"></a>
2848
+<a id="__codelineno-0-25" name="__codelineno-0-25"></a> <span class="k">def</span> <span class="nf">_get_messages_from_graylog</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page_number</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">requests</span><span class="o">.</span><span class="n">Response</span><span class="p">:</span>
2849
+<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="w"> </span><span class="sd">"""Fetches messages from Graylog for a specific page number."""</span>
2850
+<a id="__codelineno-0-27" name="__codelineno-0-27"></a> <span class="k">return</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
2851
+<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/api/system/messages?page=</span><span class="si">{</span><span class="n">page_number</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
2852
+<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">),</span>
2853
+<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
2854
+<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="p">)</span>
2855
+<a id="__codelineno-0-32" name="__codelineno-0-32"></a>
2856
+<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="k">def</span> <span class="nf">_handle_message_fetch_error</span><span class="p">(</span>
2857
+<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="bp">self</span><span class="p">,</span>
2858
+<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="n">error</span><span class="p">:</span> <span class="ne">Exception</span><span class="p">,</span>
2859
+<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2860
+<a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="w"> </span><span class="sd">"""Handles exceptions occurred while fetching messages."""</span>
2861
+<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect messages from Graylog: </span><span class="si">{</span><span class="n">error</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
2862
+<a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="k">return</span> <span class="p">{</span>
2863
+<a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect messages from Graylog"</span><span class="p">,</span>
2864
+<a id="__codelineno-0-41" name="__codelineno-0-41"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2865
+<a id="__codelineno-0-42" name="__codelineno-0-42"></a> <span class="p">}</span>
2866
+<a id="__codelineno-0-43" name="__codelineno-0-43"></a>
2867
+<a id="__codelineno-0-44" name="__codelineno-0-44"></a> <span class="k">def</span> <span class="nf">collect_messages</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]]]:</span>
2868
+<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="w"> </span><span class="sd">"""</span>
2869
+<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> Collects the latest 10 messages from Graylog.</span>
2870
+<a id="__codelineno-0-47" name="__codelineno-0-47"></a>
2871
+<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="sd"> Returns:</span>
2872
+<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of Graylog messages.</span>
2873
+<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="sd"> """</span>
2874
+<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="k">if</span> <span class="p">(</span>
2875
+<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
2876
+<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
2877
+<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
2878
+<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="p">):</span>
2879
+<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2880
+<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="k">else</span><span class="p">:</span>
2881
+<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="k">try</span><span class="p">:</span>
2882
+<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="n">page_number</span> <span class="o">=</span> <span class="mi">1</span>
2883
+<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="n">graylog_messages</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_messages_from_graylog</span><span class="p">(</span><span class="n">page_number</span><span class="p">)</span>
2884
+<a id="__codelineno-0-61" name="__codelineno-0-61"></a>
2885
+<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="k">if</span> <span class="n">graylog_messages</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
2886
+<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
2887
+<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="sa">f</span><span class="s2">"Received </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">graylog_messages</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s1">'messages'</span><span class="p">])</span><span class="si">}</span><span class="s2"> messages from Graylog"</span><span class="p">,</span>
2888
+<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="p">)</span>
2889
+<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">return</span> <span class="p">{</span>
2890
+<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully retrieved messages"</span><span class="p">,</span>
2891
+<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
2892
+<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="s2">"graylog_messages"</span><span class="p">:</span> <span class="n">graylog_messages</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">"messages"</span><span class="p">],</span>
2893
+<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="p">}</span>
2894
+<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="k">else</span><span class="p">:</span>
2895
+<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span>
2896
+<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="sa">f</span><span class="s2">"Failed to collect messages from Graylog: </span><span class="si">{</span><span class="n">graylog_messages</span><span class="o">.</span><span class="n">json</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
2897
+<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="p">)</span>
2898
+<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="k">return</span> <span class="p">{</span>
2899
+<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect messages from Graylog"</span><span class="p">,</span>
2900
+<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2901
+<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="p">}</span>
2902
+<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2903
+<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_message_fetch_error</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
2904
</code></pre></div></td></tr></table></div>
2905
</details>
2906
@@ -2924,13 +2954,7 @@ This class inherits from SQLAlchemy's Model class.</p>
2954
2955
<details class="quote">
2956
<summary>Source code in <code>app\services\Graylog\messages.py</code></summary>
2927
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-38">38</a></span>
2928
-<span class="normal"><a href="#__codelineno-0-39">39</a></span>
2929
-<span class="normal"><a href="#__codelineno-0-40">40</a></span>
2930
-<span class="normal"><a href="#__codelineno-0-41">41</a></span>
2931
-<span class="normal"><a href="#__codelineno-0-42">42</a></span>
2932
-<span class="normal"><a href="#__codelineno-0-43">43</a></span>
2933
-<span class="normal"><a href="#__codelineno-0-44">44</a></span>
2957
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-44">44</a></span>
2958
<span class="normal"><a href="#__codelineno-0-45">45</a></span>
2959
<span class="normal"><a href="#__codelineno-0-46">46</a></span>
2960
<span class="normal"><a href="#__codelineno-0-47">47</a></span>
@@ -2960,43 +2984,49 @@ This class inherits from SQLAlchemy's Model class.</p>
2984
<span class="normal"><a href="#__codelineno-0-71">71</a></span>
2985
<span class="normal"><a href="#__codelineno-0-72">72</a></span>
2986
<span class="normal"><a href="#__codelineno-0-73">73</a></span>
2963
-<span class="normal"><a href="#__codelineno-0-74">74</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="k">def</span> <span class="nf">collect_messages</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]]]:</span>
2964
-<a id="__codelineno-0-39" name="__codelineno-0-39"></a><span class="w"> </span><span class="sd">"""</span>
2965
-<a id="__codelineno-0-40" name="__codelineno-0-40"></a><span class="sd"> Collects the latest 10 messages from Graylog.</span>
2966
-<a id="__codelineno-0-41" name="__codelineno-0-41"></a>
2967
-<a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="sd"> Returns:</span>
2968
-<a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of Graylog messages.</span>
2969
-<a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> """</span>
2970
-<a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="k">if</span> <span class="p">(</span>
2971
-<a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
2972
-<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
2973
-<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
2974
-<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="p">):</span>
2975
-<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
2976
-<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="k">else</span><span class="p">:</span>
2977
-<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">try</span><span class="p">:</span>
2978
-<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="n">page_number</span> <span class="o">=</span> <span class="mi">1</span>
2979
-<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="n">graylog_messages</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_messages_from_graylog</span><span class="p">(</span><span class="n">page_number</span><span class="p">)</span>
2980
-<a id="__codelineno-0-55" name="__codelineno-0-55"></a>
2981
-<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="k">if</span> <span class="n">graylog_messages</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
2982
-<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
2983
-<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="sa">f</span><span class="s2">"Received </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">graylog_messages</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s1">'messages'</span><span class="p">])</span><span class="si">}</span><span class="s2"> messages from Graylog"</span><span class="p">,</span>
2984
-<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="p">)</span>
2985
-<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="k">return</span> <span class="p">{</span>
2986
-<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully retrieved messages"</span><span class="p">,</span>
2987
-<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
2988
-<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="s2">"graylog_messages"</span><span class="p">:</span> <span class="n">graylog_messages</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">"messages"</span><span class="p">],</span>
2989
-<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="p">}</span>
2990
-<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="k">else</span><span class="p">:</span>
2991
-<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span>
2992
-<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="sa">f</span><span class="s2">"Failed to collect messages from Graylog: </span><span class="si">{</span><span class="n">graylog_messages</span><span class="o">.</span><span class="n">json</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
2993
-<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="p">)</span>
2994
-<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="k">return</span> <span class="p">{</span>
2995
-<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect messages from Graylog"</span><span class="p">,</span>
2996
-<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2997
-<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="p">}</span>
2998
-<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2999
-<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_message_fetch_error</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
2987
+<span class="normal"><a href="#__codelineno-0-74">74</a></span>
2988
+<span class="normal"><a href="#__codelineno-0-75">75</a></span>
2989
+<span class="normal"><a href="#__codelineno-0-76">76</a></span>
2990
+<span class="normal"><a href="#__codelineno-0-77">77</a></span>
2991
+<span class="normal"><a href="#__codelineno-0-78">78</a></span>
2992
+<span class="normal"><a href="#__codelineno-0-79">79</a></span>
2993
+<span class="normal"><a href="#__codelineno-0-80">80</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="k">def</span> <span class="nf">collect_messages</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]]]:</span>
2994
+<a id="__codelineno-0-45" name="__codelineno-0-45"></a><span class="w"> </span><span class="sd">"""</span>
2995
+<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> Collects the latest 10 messages from Graylog.</span>
2996
+<a id="__codelineno-0-47" name="__codelineno-0-47"></a>
2997
+<a id="__codelineno-0-48" name="__codelineno-0-48"></a><span class="sd"> Returns:</span>
2998
+<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="sd"> dict: A dictionary containing the success status, a message, and potentially a list of Graylog messages.</span>
2999
+<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="sd"> """</span>
3000
+<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="k">if</span> <span class="p">(</span>
3001
+<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
3002
+<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
3003
+<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
3004
+<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="p">):</span>
3005
+<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
3006
+<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="k">else</span><span class="p">:</span>
3007
+<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="k">try</span><span class="p">:</span>
3008
+<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="n">page_number</span> <span class="o">=</span> <span class="mi">1</span>
3009
+<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="n">graylog_messages</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_messages_from_graylog</span><span class="p">(</span><span class="n">page_number</span><span class="p">)</span>
3010
+<a id="__codelineno-0-61" name="__codelineno-0-61"></a>
3011
+<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="k">if</span> <span class="n">graylog_messages</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
3012
+<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
3013
+<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="sa">f</span><span class="s2">"Received </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">graylog_messages</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s1">'messages'</span><span class="p">])</span><span class="si">}</span><span class="s2"> messages from Graylog"</span><span class="p">,</span>
3014
+<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="p">)</span>
3015
+<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">return</span> <span class="p">{</span>
3016
+<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully retrieved messages"</span><span class="p">,</span>
3017
+<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
3018
+<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="s2">"graylog_messages"</span><span class="p">:</span> <span class="n">graylog_messages</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">"messages"</span><span class="p">],</span>
3019
+<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="p">}</span>
3020
+<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="k">else</span><span class="p">:</span>
3021
+<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span>
3022
+<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="sa">f</span><span class="s2">"Failed to collect messages from Graylog: </span><span class="si">{</span><span class="n">graylog_messages</span><span class="o">.</span><span class="n">json</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
3023
+<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="p">)</span>
3024
+<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="k">return</span> <span class="p">{</span>
3025
+<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect messages from Graylog"</span><span class="p">,</span>
3026
+<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
3027
+<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="p">}</span>
3028
+<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
3029
+<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle_message_fetch_error</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
3030
</code></pre></div></td></tr></table></div>
3031
</details>
3032
</div>
@@ -3283,7 +3313,9 @@ This class inherits from SQLAlchemy's Model class.</p>
3313
<span class="normal"><a href="#__codelineno-0-239">239</a></span>
3314
<span class="normal"><a href="#__codelineno-0-240">240</a></span>
3315
<span class="normal"><a href="#__codelineno-0-241">241</a></span>
3286
-<span class="normal"><a href="#__codelineno-0-242">242</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="k">class</span> <span class="nc">MetricsService</span><span class="p">:</span>
3316
+<span class="normal"><a href="#__codelineno-0-242">242</a></span>
3317
+<span class="normal"><a href="#__codelineno-0-243">243</a></span>
3318
+<span class="normal"><a href="#__codelineno-0-244">244</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="k">class</span> <span class="nc">MetricsService</span><span class="p">:</span>
3319
<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="w"> </span><span class="sd">"""</span>
3320
<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> A service class that encapsulates the logic for pulling metrics from Graylog.</span>
3321
<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> """</span>
@@ -3334,183 +3366,185 @@ This class inherits from SQLAlchemy's Model class.</p>
3366
<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="k">return</span> <span class="n">journal_size</span>
3367
<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="k">return</span> <span class="n">journal_size</span>
3368
<a id="__codelineno-0-65" name="__codelineno-0-65"></a>
3337
-<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">def</span> <span class="nf">collect_throughput_metrics</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]]]:</span>
3338
-<a id="__codelineno-0-67" name="__codelineno-0-67"></a><span class="w"> </span><span class="sd">"""</span>
3339
-<a id="__codelineno-0-68" name="__codelineno-0-68"></a><span class="sd"> Collects the following Graylog Metrics:</span>
3340
-<a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="sd"> - Input Usage</span>
3341
-<a id="__codelineno-0-70" name="__codelineno-0-70"></a><span class="sd"> - Output Usage</span>
3342
-<a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="sd"> - Processor Usage</span>
3343
-<a id="__codelineno-0-72" name="__codelineno-0-72"></a><span class="sd"> - Input 1 Seconds Rate</span>
3344
-<a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="sd"> - Output 1 Seconds Rate</span>
3345
-<a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="sd"> - Total Input</span>
3346
-<a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="sd"> - Total Output</span>
3347
-<a id="__codelineno-0-76" name="__codelineno-0-76"></a>
3348
-<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> Returns:</span>
3349
-<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="sd"> dict: A dictionary containing the success status, a message, and the list of throughput metrics.</span>
3350
-<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> """</span>
3351
-<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">if</span> <span class="p">(</span>
3352
-<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
3353
-<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
3354
-<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
3355
-<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="p">):</span>
3356
-<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
3357
-<a id="__codelineno-0-86" name="__codelineno-0-86"></a>
3358
-<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="n">throughput_usage</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_metrics_throughput_usage</span><span class="p">(</span>
3359
-<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
3360
-<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
3361
-<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
3362
-<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="p">)</span>
3363
-<a id="__codelineno-0-92" name="__codelineno-0-92"></a>
3364
-<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="k">if</span> <span class="n">throughput_usage</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
3365
-<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="k">return</span> <span class="n">throughput_usage</span>
3366
-<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="k">return</span> <span class="n">throughput_usage</span>
3367
-<a id="__codelineno-0-96" name="__codelineno-0-96"></a>
3368
-<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="k">def</span> <span class="nf">_collect_metrics_uncommitted_journal_size</span><span class="p">(</span>
3369
-<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="bp">self</span><span class="p">,</span>
3370
-<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="n">connector_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3371
-<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="n">connector_username</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3372
-<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="n">connector_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3373
-<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]:</span>
3374
-<a id="__codelineno-0-103" name="__codelineno-0-103"></a><span class="w"> </span><span class="sd">"""</span>
3375
-<a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="sd"> Collects the journal size of uncommitted messages from Graylog.</span>
3376
-<a id="__codelineno-0-105" name="__codelineno-0-105"></a>
3377
-<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> Args:</span>
3378
-<a id="__codelineno-0-107" name="__codelineno-0-107"></a><span class="sd"> connector_url (str): The URL of the Graylog connector.</span>
3379
-<a id="__codelineno-0-108" name="__codelineno-0-108"></a><span class="sd"> connector_username (str): The username of the Graylog connector.</span>
3380
-<a id="__codelineno-0-109" name="__codelineno-0-109"></a><span class="sd"> connector_password (str): The password of the Graylog connector.</span>
3381
-<a id="__codelineno-0-110" name="__codelineno-0-110"></a>
3382
-<a id="__codelineno-0-111" name="__codelineno-0-111"></a><span class="sd"> Returns:</span>
3383
-<a id="__codelineno-0-112" name="__codelineno-0-112"></a><span class="sd"> dict: A dictionary containing the success status, a message, and the size of uncommitted journal entries.</span>
3384
-<a id="__codelineno-0-113" name="__codelineno-0-113"></a><span class="sd"> """</span>
3385
-<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="k">try</span><span class="p">:</span>
3386
-<a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Collecting journal size from Graylog"</span><span class="p">)</span>
3387
-<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"X-Requested-By"</span><span class="p">:</span> <span class="s2">"CoPilot"</span><span class="p">}</span>
3388
-<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="c1"># Get the Graylog Journal Size</span>
3389
-<a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="n">uncommitted_journal_size_response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
3390
-<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/api/system/journal"</span><span class="p">,</span>
3391
-<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span>
3392
-<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="n">connector_username</span><span class="p">,</span> <span class="n">connector_password</span><span class="p">),</span>
3393
-<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
3394
-<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="p">)</span>
3395
-<a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="n">uncommitted_journal_size</span> <span class="o">=</span> <span class="n">uncommitted_journal_size_response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
3396
-<a id="__codelineno-0-125" name="__codelineno-0-125"></a>
3397
-<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
3398
-<a id="__codelineno-0-127" name="__codelineno-0-127"></a> <span class="sa">f</span><span class="s2">"Received </span><span class="si">{</span><span class="n">uncommitted_journal_size</span><span class="si">}</span><span class="s2"> uncommitted journal entries from Graylog"</span><span class="p">,</span>
3399
-<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="p">)</span>
3400
-<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="k">return</span> <span class="p">{</span>
3401
-<a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully retrieved journal size"</span><span class="p">,</span>
3402
-<a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
3403
-<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="s2">"uncommitted_journal_entries"</span><span class="p">:</span> <span class="n">uncommitted_journal_size</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
3404
-<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="s2">"uncommitted_journal_entries"</span><span class="p">,</span>
3405
-<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="mi">0</span><span class="p">,</span>
3406
-<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="p">),</span>
3407
-<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="p">}</span>
3408
-<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
3409
-<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect journal size from Graylog: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
3410
-<a id="__codelineno-0-139" name="__codelineno-0-139"></a> <span class="k">return</span> <span class="p">{</span>
3411
-<a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect journal size from Graylog"</span><span class="p">,</span>
3412
-<a id="__codelineno-0-141" name="__codelineno-0-141"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
3413
-<a id="__codelineno-0-142" name="__codelineno-0-142"></a> <span class="p">}</span>
3414
-<a id="__codelineno-0-143" name="__codelineno-0-143"></a>
3415
-<a id="__codelineno-0-144" name="__codelineno-0-144"></a> <span class="k">def</span> <span class="nf">_collect_metrics_throughput_usage</span><span class="p">(</span>
3416
-<a id="__codelineno-0-145" name="__codelineno-0-145"></a> <span class="bp">self</span><span class="p">,</span>
3417
-<a id="__codelineno-0-146" name="__codelineno-0-146"></a> <span class="n">connector_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3418
-<a id="__codelineno-0-147" name="__codelineno-0-147"></a> <span class="n">connector_username</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3419
-<a id="__codelineno-0-148" name="__codelineno-0-148"></a> <span class="n">connector_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3420
-<a id="__codelineno-0-149" name="__codelineno-0-149"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]]]:</span>
3421
-<a id="__codelineno-0-150" name="__codelineno-0-150"></a><span class="w"> </span><span class="sd">"""</span>
3422
-<a id="__codelineno-0-151" name="__codelineno-0-151"></a><span class="sd"> Collects throughput usage from Graylog.</span>
3423
-<a id="__codelineno-0-152" name="__codelineno-0-152"></a>
3424
-<a id="__codelineno-0-153" name="__codelineno-0-153"></a><span class="sd"> Args:</span>
3425
-<a id="__codelineno-0-154" name="__codelineno-0-154"></a><span class="sd"> connector_url (str): The URL of the Graylog connector.</span>
3426
-<a id="__codelineno-0-155" name="__codelineno-0-155"></a><span class="sd"> connector_username (str): The username of the Graylog connector.</span>
3427
-<a id="__codelineno-0-156" name="__codelineno-0-156"></a><span class="sd"> connector_password (str): The password of the Graylog connector.</span>
3428
-<a id="__codelineno-0-157" name="__codelineno-0-157"></a>
3429
-<a id="__codelineno-0-158" name="__codelineno-0-158"></a><span class="sd"> Returns:</span>
3430
-<a id="__codelineno-0-159" name="__codelineno-0-159"></a><span class="sd"> dict: A dictionary containing the success status, a message, and the list of throughput usage metrics.</span>
3431
-<a id="__codelineno-0-160" name="__codelineno-0-160"></a><span class="sd"> """</span>
3432
-<a id="__codelineno-0-161" name="__codelineno-0-161"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Collecting throughput usage from Graylog"</span><span class="p">)</span>
3433
-<a id="__codelineno-0-162" name="__codelineno-0-162"></a>
3434
-<a id="__codelineno-0-163" name="__codelineno-0-163"></a> <span class="k">try</span><span class="p">:</span>
3435
-<a id="__codelineno-0-164" name="__codelineno-0-164"></a> <span class="n">throughput_metrics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_make_throughput_api_call</span><span class="p">(</span>
3436
-<a id="__codelineno-0-165" name="__codelineno-0-165"></a> <span class="n">connector_url</span><span class="p">,</span>
3437
-<a id="__codelineno-0-166" name="__codelineno-0-166"></a> <span class="bp">self</span><span class="o">.</span><span class="n">HEADERS</span><span class="p">,</span>
3438
-<a id="__codelineno-0-167" name="__codelineno-0-167"></a> <span class="n">connector_username</span><span class="p">,</span>
3439
-<a id="__codelineno-0-168" name="__codelineno-0-168"></a> <span class="n">connector_password</span><span class="p">,</span>
3440
-<a id="__codelineno-0-169" name="__codelineno-0-169"></a> <span class="p">)</span>
3441
-<a id="__codelineno-0-170" name="__codelineno-0-170"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_throughput_metrics</span><span class="p">(</span><span class="n">throughput_metrics</span><span class="p">)</span>
3442
-<a id="__codelineno-0-171" name="__codelineno-0-171"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
3443
-<a id="__codelineno-0-172" name="__codelineno-0-172"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect throughput usage from Graylog: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
3444
-<a id="__codelineno-0-173" name="__codelineno-0-173"></a> <span class="k">return</span> <span class="p">{</span>
3445
-<a id="__codelineno-0-174" name="__codelineno-0-174"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect throughput usage from Graylog"</span><span class="p">,</span>
3446
-<a id="__codelineno-0-175" name="__codelineno-0-175"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
3447
-<a id="__codelineno-0-176" name="__codelineno-0-176"></a> <span class="p">}</span>
3448
-<a id="__codelineno-0-177" name="__codelineno-0-177"></a>
3449
-<a id="__codelineno-0-178" name="__codelineno-0-178"></a> <span class="k">def</span> <span class="nf">_make_throughput_api_call</span><span class="p">(</span>
3450
-<a id="__codelineno-0-179" name="__codelineno-0-179"></a> <span class="bp">self</span><span class="p">,</span>
3451
-<a id="__codelineno-0-180" name="__codelineno-0-180"></a> <span class="n">connector_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3452
-<a id="__codelineno-0-181" name="__codelineno-0-181"></a> <span class="n">headers</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span>
3453
-<a id="__codelineno-0-182" name="__codelineno-0-182"></a> <span class="n">connector_username</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3454
-<a id="__codelineno-0-183" name="__codelineno-0-183"></a> <span class="n">connector_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3455
-<a id="__codelineno-0-184" name="__codelineno-0-184"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">object</span><span class="p">]:</span>
3456
-<a id="__codelineno-0-185" name="__codelineno-0-185"></a><span class="w"> </span><span class="sd">"""</span>
3457
-<a id="__codelineno-0-186" name="__codelineno-0-186"></a><span class="sd"> Makes Throughput API call to Graylog.</span>
3458
-<a id="__codelineno-0-187" name="__codelineno-0-187"></a>
3459
-<a id="__codelineno-0-188" name="__codelineno-0-188"></a><span class="sd"> Args:</span>
3460
-<a id="__codelineno-0-189" name="__codelineno-0-189"></a><span class="sd"> connector_url (str): The URL of the Graylog connector.</span>
3461
-<a id="__codelineno-0-190" name="__codelineno-0-190"></a><span class="sd"> headers (dict): The headers for the request.</span>
3462
-<a id="__codelineno-0-191" name="__codelineno-0-191"></a><span class="sd"> connector_username (str): The username of the Graylog connector.</span>
3463
-<a id="__codelineno-0-192" name="__codelineno-0-192"></a><span class="sd"> connector_password (str): The password of the Graylog connector.</span>
3464
-<a id="__codelineno-0-193" name="__codelineno-0-193"></a>
3465
-<a id="__codelineno-0-194" name="__codelineno-0-194"></a><span class="sd"> Returns:</span>
3466
-<a id="__codelineno-0-195" name="__codelineno-0-195"></a><span class="sd"> dict: The dictionary containing throughput metrics.</span>
3467
-<a id="__codelineno-0-196" name="__codelineno-0-196"></a><span class="sd"> """</span>
3468
-<a id="__codelineno-0-197" name="__codelineno-0-197"></a> <span class="n">throughput</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
3469
-<a id="__codelineno-0-198" name="__codelineno-0-198"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/api/system/metrics"</span><span class="p">,</span>
3470
-<a id="__codelineno-0-199" name="__codelineno-0-199"></a> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span>
3471
-<a id="__codelineno-0-200" name="__codelineno-0-200"></a> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="n">connector_username</span><span class="p">,</span> <span class="n">connector_password</span><span class="p">),</span>
3472
-<a id="__codelineno-0-201" name="__codelineno-0-201"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
3473
-<a id="__codelineno-0-202" name="__codelineno-0-202"></a> <span class="p">)</span>
3474
-<a id="__codelineno-0-203" name="__codelineno-0-203"></a> <span class="n">throughput_json</span> <span class="o">=</span> <span class="n">throughput</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
3475
-<a id="__codelineno-0-204" name="__codelineno-0-204"></a> <span class="n">throughput_metrics</span> <span class="o">=</span> <span class="n">throughput_json</span><span class="p">[</span><span class="s2">"gauges"</span><span class="p">]</span>
3476
-<a id="__codelineno-0-205" name="__codelineno-0-205"></a> <span class="n">input_output_throughput</span> <span class="o">=</span> <span class="n">throughput_json</span><span class="p">[</span><span class="s2">"counters"</span><span class="p">]</span>
3477
-<a id="__codelineno-0-206" name="__codelineno-0-206"></a>
3478
-<a id="__codelineno-0-207" name="__codelineno-0-207"></a> <span class="n">throughput_metrics</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">input_output_throughput</span><span class="p">)</span> <span class="c1"># Merge the two dictionaries</span>
3479
-<a id="__codelineno-0-208" name="__codelineno-0-208"></a> <span class="k">return</span> <span class="n">throughput_metrics</span>
3480
-<a id="__codelineno-0-209" name="__codelineno-0-209"></a>
3481
-<a id="__codelineno-0-210" name="__codelineno-0-210"></a> <span class="k">def</span> <span class="nf">_parse_throughput_metrics</span><span class="p">(</span>
3482
-<a id="__codelineno-0-211" name="__codelineno-0-211"></a> <span class="bp">self</span><span class="p">,</span>
3483
-<a id="__codelineno-0-212" name="__codelineno-0-212"></a> <span class="n">throughput_metrics</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">object</span><span class="p">],</span>
3484
-<a id="__codelineno-0-213" name="__codelineno-0-213"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]]]:</span>
3485
-<a id="__codelineno-0-214" name="__codelineno-0-214"></a><span class="w"> </span><span class="sd">"""</span>
3486
-<a id="__codelineno-0-215" name="__codelineno-0-215"></a><span class="sd"> Parses throughput metrics.</span>
3487
-<a id="__codelineno-0-216" name="__codelineno-0-216"></a>
3488
-<a id="__codelineno-0-217" name="__codelineno-0-217"></a><span class="sd"> Args:</span>
3489
-<a id="__codelineno-0-218" name="__codelineno-0-218"></a><span class="sd"> throughput_metrics (dict): The dictionary containing throughput metrics.</span>
3490
-<a id="__codelineno-0-219" name="__codelineno-0-219"></a>
3491
-<a id="__codelineno-0-220" name="__codelineno-0-220"></a><span class="sd"> Returns:</span>
3492
-<a id="__codelineno-0-221" name="__codelineno-0-221"></a><span class="sd"> dict: A dictionary containing the success status, a message, and the list of parsed throughput metrics.</span>
3493
-<a id="__codelineno-0-222" name="__codelineno-0-222"></a><span class="sd"> """</span>
3494
-<a id="__codelineno-0-223" name="__codelineno-0-223"></a> <span class="n">throughput_metrics_list</span> <span class="o">=</span> <span class="p">[]</span>
3495
-<a id="__codelineno-0-224" name="__codelineno-0-224"></a> <span class="n">results</span> <span class="o">=</span> <span class="p">{}</span>
3496
-<a id="__codelineno-0-225" name="__codelineno-0-225"></a>
3497
-<a id="__codelineno-0-226" name="__codelineno-0-226"></a> <span class="k">for</span> <span class="n">metric</span><span class="p">,</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">throughput_metrics</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
3498
-<a id="__codelineno-0-227" name="__codelineno-0-227"></a> <span class="k">if</span> <span class="n">metric</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">METRIC_NAMES</span><span class="p">:</span>
3499
-<a id="__codelineno-0-228" name="__codelineno-0-228"></a> <span class="n">value</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s2">"value"</span><span class="p">]</span> <span class="k">if</span> <span class="s2">"value"</span> <span class="ow">in</span> <span class="n">data</span> <span class="k">else</span> <span class="n">data</span><span class="p">[</span><span class="s2">"count"</span><span class="p">]</span>
3500
-<a id="__codelineno-0-229" name="__codelineno-0-229"></a> <span class="n">throughput_metrics_list</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s2">"metric"</span><span class="p">:</span> <span class="n">metric</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">:</span> <span class="n">value</span><span class="p">})</span>
3501
-<a id="__codelineno-0-230" name="__codelineno-0-230"></a>
3502
-<a id="__codelineno-0-231" name="__codelineno-0-231"></a> <span class="n">variable_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">METRIC_NAMES</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">metric</span><span class="p">)</span>
3503
-<a id="__codelineno-0-232" name="__codelineno-0-232"></a> <span class="k">if</span> <span class="n">variable_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
3504
-<a id="__codelineno-0-233" name="__codelineno-0-233"></a> <span class="n">results</span><span class="p">[</span><span class="n">variable_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
3505
-<a id="__codelineno-0-234" name="__codelineno-0-234"></a>
3506
-<a id="__codelineno-0-235" name="__codelineno-0-235"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
3507
-<a id="__codelineno-0-236" name="__codelineno-0-236"></a> <span class="sa">f</span><span class="s2">"Received throughput usage from Graylog: </span><span class="si">{</span><span class="n">throughput_metrics_list</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
3508
-<a id="__codelineno-0-237" name="__codelineno-0-237"></a> <span class="p">)</span>
3509
-<a id="__codelineno-0-238" name="__codelineno-0-238"></a> <span class="k">return</span> <span class="p">{</span>
3510
-<a id="__codelineno-0-239" name="__codelineno-0-239"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully retrieved throughput usage"</span><span class="p">,</span>
3511
-<a id="__codelineno-0-240" name="__codelineno-0-240"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
3512
-<a id="__codelineno-0-241" name="__codelineno-0-241"></a> <span class="s2">"throughput_metrics"</span><span class="p">:</span> <span class="n">throughput_metrics_list</span><span class="p">,</span>
3513
-<a id="__codelineno-0-242" name="__codelineno-0-242"></a> <span class="p">}</span>
3369
+<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">def</span> <span class="nf">collect_throughput_metrics</span><span class="p">(</span>
3370
+<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="bp">self</span><span class="p">,</span>
3371
+<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]]]:</span>
3372
+<a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="w"> </span><span class="sd">"""</span>
3373
+<a id="__codelineno-0-70" name="__codelineno-0-70"></a><span class="sd"> Collects the following Graylog Metrics:</span>
3374
+<a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="sd"> - Input Usage</span>
3375
+<a id="__codelineno-0-72" name="__codelineno-0-72"></a><span class="sd"> - Output Usage</span>
3376
+<a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="sd"> - Processor Usage</span>
3377
+<a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="sd"> - Input 1 Seconds Rate</span>
3378
+<a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="sd"> - Output 1 Seconds Rate</span>
3379
+<a id="__codelineno-0-76" name="__codelineno-0-76"></a><span class="sd"> - Total Input</span>
3380
+<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> - Total Output</span>
3381
+<a id="__codelineno-0-78" name="__codelineno-0-78"></a>
3382
+<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> Returns:</span>
3383
+<a id="__codelineno-0-80" name="__codelineno-0-80"></a><span class="sd"> dict: A dictionary containing the success status, a message, and the list of throughput metrics.</span>
3384
+<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> """</span>
3385
+<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="k">if</span> <span class="p">(</span>
3386
+<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
3387
+<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
3388
+<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
3389
+<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="p">):</span>
3390
+<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
3391
+<a id="__codelineno-0-88" name="__codelineno-0-88"></a>
3392
+<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="n">throughput_usage</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_metrics_throughput_usage</span><span class="p">(</span>
3393
+<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
3394
+<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
3395
+<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
3396
+<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="p">)</span>
3397
+<a id="__codelineno-0-94" name="__codelineno-0-94"></a>
3398
+<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="k">if</span> <span class="n">throughput_usage</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
3399
+<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="k">return</span> <span class="n">throughput_usage</span>
3400
+<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="k">return</span> <span class="n">throughput_usage</span>
3401
+<a id="__codelineno-0-98" name="__codelineno-0-98"></a>
3402
+<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="k">def</span> <span class="nf">_collect_metrics_uncommitted_journal_size</span><span class="p">(</span>
3403
+<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="bp">self</span><span class="p">,</span>
3404
+<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="n">connector_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3405
+<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="n">connector_username</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3406
+<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="n">connector_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3407
+<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]:</span>
3408
+<a id="__codelineno-0-105" name="__codelineno-0-105"></a><span class="w"> </span><span class="sd">"""</span>
3409
+<a id="__codelineno-0-106" name="__codelineno-0-106"></a><span class="sd"> Collects the journal size of uncommitted messages from Graylog.</span>
3410
+<a id="__codelineno-0-107" name="__codelineno-0-107"></a>
3411
+<a id="__codelineno-0-108" name="__codelineno-0-108"></a><span class="sd"> Args:</span>
3412
+<a id="__codelineno-0-109" name="__codelineno-0-109"></a><span class="sd"> connector_url (str): The URL of the Graylog connector.</span>
3413
+<a id="__codelineno-0-110" name="__codelineno-0-110"></a><span class="sd"> connector_username (str): The username of the Graylog connector.</span>
3414
+<a id="__codelineno-0-111" name="__codelineno-0-111"></a><span class="sd"> connector_password (str): The password of the Graylog connector.</span>
3415
+<a id="__codelineno-0-112" name="__codelineno-0-112"></a>
3416
+<a id="__codelineno-0-113" name="__codelineno-0-113"></a><span class="sd"> Returns:</span>
3417
+<a id="__codelineno-0-114" name="__codelineno-0-114"></a><span class="sd"> dict: A dictionary containing the success status, a message, and the size of uncommitted journal entries.</span>
3418
+<a id="__codelineno-0-115" name="__codelineno-0-115"></a><span class="sd"> """</span>
3419
+<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="k">try</span><span class="p">:</span>
3420
+<a id="__codelineno-0-117" name="__codelineno-0-117"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Collecting journal size from Graylog"</span><span class="p">)</span>
3421
+<a id="__codelineno-0-118" name="__codelineno-0-118"></a> <span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"X-Requested-By"</span><span class="p">:</span> <span class="s2">"CoPilot"</span><span class="p">}</span>
3422
+<a id="__codelineno-0-119" name="__codelineno-0-119"></a> <span class="c1"># Get the Graylog Journal Size</span>
3423
+<a id="__codelineno-0-120" name="__codelineno-0-120"></a> <span class="n">uncommitted_journal_size_response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
3424
+<a id="__codelineno-0-121" name="__codelineno-0-121"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/api/system/journal"</span><span class="p">,</span>
3425
+<a id="__codelineno-0-122" name="__codelineno-0-122"></a> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span>
3426
+<a id="__codelineno-0-123" name="__codelineno-0-123"></a> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="n">connector_username</span><span class="p">,</span> <span class="n">connector_password</span><span class="p">),</span>
3427
+<a id="__codelineno-0-124" name="__codelineno-0-124"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
3428
+<a id="__codelineno-0-125" name="__codelineno-0-125"></a> <span class="p">)</span>
3429
+<a id="__codelineno-0-126" name="__codelineno-0-126"></a> <span class="n">uncommitted_journal_size</span> <span class="o">=</span> <span class="n">uncommitted_journal_size_response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
3430
+<a id="__codelineno-0-127" name="__codelineno-0-127"></a>
3431
+<a id="__codelineno-0-128" name="__codelineno-0-128"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
3432
+<a id="__codelineno-0-129" name="__codelineno-0-129"></a> <span class="sa">f</span><span class="s2">"Received </span><span class="si">{</span><span class="n">uncommitted_journal_size</span><span class="si">}</span><span class="s2"> uncommitted journal entries from Graylog"</span><span class="p">,</span>
3433
+<a id="__codelineno-0-130" name="__codelineno-0-130"></a> <span class="p">)</span>
3434
+<a id="__codelineno-0-131" name="__codelineno-0-131"></a> <span class="k">return</span> <span class="p">{</span>
3435
+<a id="__codelineno-0-132" name="__codelineno-0-132"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully retrieved journal size"</span><span class="p">,</span>
3436
+<a id="__codelineno-0-133" name="__codelineno-0-133"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
3437
+<a id="__codelineno-0-134" name="__codelineno-0-134"></a> <span class="s2">"uncommitted_journal_entries"</span><span class="p">:</span> <span class="n">uncommitted_journal_size</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
3438
+<a id="__codelineno-0-135" name="__codelineno-0-135"></a> <span class="s2">"uncommitted_journal_entries"</span><span class="p">,</span>
3439
+<a id="__codelineno-0-136" name="__codelineno-0-136"></a> <span class="mi">0</span><span class="p">,</span>
3440
+<a id="__codelineno-0-137" name="__codelineno-0-137"></a> <span class="p">),</span>
3441
+<a id="__codelineno-0-138" name="__codelineno-0-138"></a> <span class="p">}</span>
3442
+<a id="__codelineno-0-139" name="__codelineno-0-139"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
3443
+<a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect journal size from Graylog: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
3444
+<a id="__codelineno-0-141" name="__codelineno-0-141"></a> <span class="k">return</span> <span class="p">{</span>
3445
+<a id="__codelineno-0-142" name="__codelineno-0-142"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect journal size from Graylog"</span><span class="p">,</span>
3446
+<a id="__codelineno-0-143" name="__codelineno-0-143"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
3447
+<a id="__codelineno-0-144" name="__codelineno-0-144"></a> <span class="p">}</span>
3448
+<a id="__codelineno-0-145" name="__codelineno-0-145"></a>
3449
+<a id="__codelineno-0-146" name="__codelineno-0-146"></a> <span class="k">def</span> <span class="nf">_collect_metrics_throughput_usage</span><span class="p">(</span>
3450
+<a id="__codelineno-0-147" name="__codelineno-0-147"></a> <span class="bp">self</span><span class="p">,</span>
3451
+<a id="__codelineno-0-148" name="__codelineno-0-148"></a> <span class="n">connector_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3452
+<a id="__codelineno-0-149" name="__codelineno-0-149"></a> <span class="n">connector_username</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3453
+<a id="__codelineno-0-150" name="__codelineno-0-150"></a> <span class="n">connector_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3454
+<a id="__codelineno-0-151" name="__codelineno-0-151"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]]]:</span>
3455
+<a id="__codelineno-0-152" name="__codelineno-0-152"></a><span class="w"> </span><span class="sd">"""</span>
3456
+<a id="__codelineno-0-153" name="__codelineno-0-153"></a><span class="sd"> Collects throughput usage from Graylog.</span>
3457
+<a id="__codelineno-0-154" name="__codelineno-0-154"></a>
3458
+<a id="__codelineno-0-155" name="__codelineno-0-155"></a><span class="sd"> Args:</span>
3459
+<a id="__codelineno-0-156" name="__codelineno-0-156"></a><span class="sd"> connector_url (str): The URL of the Graylog connector.</span>
3460
+<a id="__codelineno-0-157" name="__codelineno-0-157"></a><span class="sd"> connector_username (str): The username of the Graylog connector.</span>
3461
+<a id="__codelineno-0-158" name="__codelineno-0-158"></a><span class="sd"> connector_password (str): The password of the Graylog connector.</span>
3462
+<a id="__codelineno-0-159" name="__codelineno-0-159"></a>
3463
+<a id="__codelineno-0-160" name="__codelineno-0-160"></a><span class="sd"> Returns:</span>
3464
+<a id="__codelineno-0-161" name="__codelineno-0-161"></a><span class="sd"> dict: A dictionary containing the success status, a message, and the list of throughput usage metrics.</span>
3465
+<a id="__codelineno-0-162" name="__codelineno-0-162"></a><span class="sd"> """</span>
3466
+<a id="__codelineno-0-163" name="__codelineno-0-163"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Collecting throughput usage from Graylog"</span><span class="p">)</span>
3467
+<a id="__codelineno-0-164" name="__codelineno-0-164"></a>
3468
+<a id="__codelineno-0-165" name="__codelineno-0-165"></a> <span class="k">try</span><span class="p">:</span>
3469
+<a id="__codelineno-0-166" name="__codelineno-0-166"></a> <span class="n">throughput_metrics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_make_throughput_api_call</span><span class="p">(</span>
3470
+<a id="__codelineno-0-167" name="__codelineno-0-167"></a> <span class="n">connector_url</span><span class="p">,</span>
3471
+<a id="__codelineno-0-168" name="__codelineno-0-168"></a> <span class="bp">self</span><span class="o">.</span><span class="n">HEADERS</span><span class="p">,</span>
3472
+<a id="__codelineno-0-169" name="__codelineno-0-169"></a> <span class="n">connector_username</span><span class="p">,</span>
3473
+<a id="__codelineno-0-170" name="__codelineno-0-170"></a> <span class="n">connector_password</span><span class="p">,</span>
3474
+<a id="__codelineno-0-171" name="__codelineno-0-171"></a> <span class="p">)</span>
3475
+<a id="__codelineno-0-172" name="__codelineno-0-172"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_throughput_metrics</span><span class="p">(</span><span class="n">throughput_metrics</span><span class="p">)</span>
3476
+<a id="__codelineno-0-173" name="__codelineno-0-173"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
3477
+<a id="__codelineno-0-174" name="__codelineno-0-174"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to collect throughput usage from Graylog: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
3478
+<a id="__codelineno-0-175" name="__codelineno-0-175"></a> <span class="k">return</span> <span class="p">{</span>
3479
+<a id="__codelineno-0-176" name="__codelineno-0-176"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect throughput usage from Graylog"</span><span class="p">,</span>
3480
+<a id="__codelineno-0-177" name="__codelineno-0-177"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
3481
+<a id="__codelineno-0-178" name="__codelineno-0-178"></a> <span class="p">}</span>
3482
+<a id="__codelineno-0-179" name="__codelineno-0-179"></a>
3483
+<a id="__codelineno-0-180" name="__codelineno-0-180"></a> <span class="k">def</span> <span class="nf">_make_throughput_api_call</span><span class="p">(</span>
3484
+<a id="__codelineno-0-181" name="__codelineno-0-181"></a> <span class="bp">self</span><span class="p">,</span>
3485
+<a id="__codelineno-0-182" name="__codelineno-0-182"></a> <span class="n">connector_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3486
+<a id="__codelineno-0-183" name="__codelineno-0-183"></a> <span class="n">headers</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span>
3487
+<a id="__codelineno-0-184" name="__codelineno-0-184"></a> <span class="n">connector_username</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3488
+<a id="__codelineno-0-185" name="__codelineno-0-185"></a> <span class="n">connector_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3489
+<a id="__codelineno-0-186" name="__codelineno-0-186"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">object</span><span class="p">]:</span>
3490
+<a id="__codelineno-0-187" name="__codelineno-0-187"></a><span class="w"> </span><span class="sd">"""</span>
3491
+<a id="__codelineno-0-188" name="__codelineno-0-188"></a><span class="sd"> Makes Throughput API call to Graylog.</span>
3492
+<a id="__codelineno-0-189" name="__codelineno-0-189"></a>
3493
+<a id="__codelineno-0-190" name="__codelineno-0-190"></a><span class="sd"> Args:</span>
3494
+<a id="__codelineno-0-191" name="__codelineno-0-191"></a><span class="sd"> connector_url (str): The URL of the Graylog connector.</span>
3495
+<a id="__codelineno-0-192" name="__codelineno-0-192"></a><span class="sd"> headers (dict): The headers for the request.</span>
3496
+<a id="__codelineno-0-193" name="__codelineno-0-193"></a><span class="sd"> connector_username (str): The username of the Graylog connector.</span>
3497
+<a id="__codelineno-0-194" name="__codelineno-0-194"></a><span class="sd"> connector_password (str): The password of the Graylog connector.</span>
3498
+<a id="__codelineno-0-195" name="__codelineno-0-195"></a>
3499
+<a id="__codelineno-0-196" name="__codelineno-0-196"></a><span class="sd"> Returns:</span>
3500
+<a id="__codelineno-0-197" name="__codelineno-0-197"></a><span class="sd"> dict: The dictionary containing throughput metrics.</span>
3501
+<a id="__codelineno-0-198" name="__codelineno-0-198"></a><span class="sd"> """</span>
3502
+<a id="__codelineno-0-199" name="__codelineno-0-199"></a> <span class="n">throughput</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
3503
+<a id="__codelineno-0-200" name="__codelineno-0-200"></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">connector_url</span><span class="si">}</span><span class="s2">/api/system/metrics"</span><span class="p">,</span>
3504
+<a id="__codelineno-0-201" name="__codelineno-0-201"></a> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span>
3505
+<a id="__codelineno-0-202" name="__codelineno-0-202"></a> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="n">connector_username</span><span class="p">,</span> <span class="n">connector_password</span><span class="p">),</span>
3506
+<a id="__codelineno-0-203" name="__codelineno-0-203"></a> <span class="n">verify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
3507
+<a id="__codelineno-0-204" name="__codelineno-0-204"></a> <span class="p">)</span>
3508
+<a id="__codelineno-0-205" name="__codelineno-0-205"></a> <span class="n">throughput_json</span> <span class="o">=</span> <span class="n">throughput</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
3509
+<a id="__codelineno-0-206" name="__codelineno-0-206"></a> <span class="n">throughput_metrics</span> <span class="o">=</span> <span class="n">throughput_json</span><span class="p">[</span><span class="s2">"gauges"</span><span class="p">]</span>
3510
+<a id="__codelineno-0-207" name="__codelineno-0-207"></a> <span class="n">input_output_throughput</span> <span class="o">=</span> <span class="n">throughput_json</span><span class="p">[</span><span class="s2">"counters"</span><span class="p">]</span>
3511
+<a id="__codelineno-0-208" name="__codelineno-0-208"></a>
3512
+<a id="__codelineno-0-209" name="__codelineno-0-209"></a> <span class="n">throughput_metrics</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">input_output_throughput</span><span class="p">)</span> <span class="c1"># Merge the two dictionaries</span>
3513
+<a id="__codelineno-0-210" name="__codelineno-0-210"></a> <span class="k">return</span> <span class="n">throughput_metrics</span>
3514
+<a id="__codelineno-0-211" name="__codelineno-0-211"></a>
3515
+<a id="__codelineno-0-212" name="__codelineno-0-212"></a> <span class="k">def</span> <span class="nf">_parse_throughput_metrics</span><span class="p">(</span>
3516
+<a id="__codelineno-0-213" name="__codelineno-0-213"></a> <span class="bp">self</span><span class="p">,</span>
3517
+<a id="__codelineno-0-214" name="__codelineno-0-214"></a> <span class="n">throughput_metrics</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">object</span><span class="p">],</span>
3518
+<a id="__codelineno-0-215" name="__codelineno-0-215"></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]]]:</span>
3519
+<a id="__codelineno-0-216" name="__codelineno-0-216"></a><span class="w"> </span><span class="sd">"""</span>
3520
+<a id="__codelineno-0-217" name="__codelineno-0-217"></a><span class="sd"> Parses throughput metrics.</span>
3521
+<a id="__codelineno-0-218" name="__codelineno-0-218"></a>
3522
+<a id="__codelineno-0-219" name="__codelineno-0-219"></a><span class="sd"> Args:</span>
3523
+<a id="__codelineno-0-220" name="__codelineno-0-220"></a><span class="sd"> throughput_metrics (dict): The dictionary containing throughput metrics.</span>
3524
+<a id="__codelineno-0-221" name="__codelineno-0-221"></a>
3525
+<a id="__codelineno-0-222" name="__codelineno-0-222"></a><span class="sd"> Returns:</span>
3526
+<a id="__codelineno-0-223" name="__codelineno-0-223"></a><span class="sd"> dict: A dictionary containing the success status, a message, and the list of parsed throughput metrics.</span>
3527
+<a id="__codelineno-0-224" name="__codelineno-0-224"></a><span class="sd"> """</span>
3528
+<a id="__codelineno-0-225" name="__codelineno-0-225"></a> <span class="n">throughput_metrics_list</span> <span class="o">=</span> <span class="p">[]</span>
3529
+<a id="__codelineno-0-226" name="__codelineno-0-226"></a> <span class="n">results</span> <span class="o">=</span> <span class="p">{}</span>
3530
+<a id="__codelineno-0-227" name="__codelineno-0-227"></a>
3531
+<a id="__codelineno-0-228" name="__codelineno-0-228"></a> <span class="k">for</span> <span class="n">metric</span><span class="p">,</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">throughput_metrics</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
3532
+<a id="__codelineno-0-229" name="__codelineno-0-229"></a> <span class="k">if</span> <span class="n">metric</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">METRIC_NAMES</span><span class="p">:</span>
3533
+<a id="__codelineno-0-230" name="__codelineno-0-230"></a> <span class="n">value</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s2">"value"</span><span class="p">]</span> <span class="k">if</span> <span class="s2">"value"</span> <span class="ow">in</span> <span class="n">data</span> <span class="k">else</span> <span class="n">data</span><span class="p">[</span><span class="s2">"count"</span><span class="p">]</span>
3534
+<a id="__codelineno-0-231" name="__codelineno-0-231"></a> <span class="n">throughput_metrics_list</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s2">"metric"</span><span class="p">:</span> <span class="n">metric</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">:</span> <span class="n">value</span><span class="p">})</span>
3535
+<a id="__codelineno-0-232" name="__codelineno-0-232"></a>
3536
+<a id="__codelineno-0-233" name="__codelineno-0-233"></a> <span class="n">variable_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">METRIC_NAMES</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">metric</span><span class="p">)</span>
3537
+<a id="__codelineno-0-234" name="__codelineno-0-234"></a> <span class="k">if</span> <span class="n">variable_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
3538
+<a id="__codelineno-0-235" name="__codelineno-0-235"></a> <span class="n">results</span><span class="p">[</span><span class="n">variable_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
3539
+<a id="__codelineno-0-236" name="__codelineno-0-236"></a>
3540
+<a id="__codelineno-0-237" name="__codelineno-0-237"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
3541
+<a id="__codelineno-0-238" name="__codelineno-0-238"></a> <span class="sa">f</span><span class="s2">"Received throughput usage from Graylog: </span><span class="si">{</span><span class="n">throughput_metrics_list</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
3542
+<a id="__codelineno-0-239" name="__codelineno-0-239"></a> <span class="p">)</span>
3543
+<a id="__codelineno-0-240" name="__codelineno-0-240"></a> <span class="k">return</span> <span class="p">{</span>
3544
+<a id="__codelineno-0-241" name="__codelineno-0-241"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Successfully retrieved throughput usage"</span><span class="p">,</span>
3545
+<a id="__codelineno-0-242" name="__codelineno-0-242"></a> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
3546
+<a id="__codelineno-0-243" name="__codelineno-0-243"></a> <span class="s2">"throughput_metrics"</span><span class="p">:</span> <span class="n">throughput_metrics_list</span><span class="p">,</span>
3547
+<a id="__codelineno-0-244" name="__codelineno-0-244"></a> <span class="p">}</span>
3548
</code></pre></div></td></tr></table></div>
3549
</details>
3550
@@ -3639,36 +3673,40 @@ This class inherits from SQLAlchemy's Model class.</p>
3673
<span class="normal"><a href="#__codelineno-0-92">92</a></span>
3674
<span class="normal"><a href="#__codelineno-0-93">93</a></span>
3675
<span class="normal"><a href="#__codelineno-0-94">94</a></span>
3642
-<span class="normal"><a href="#__codelineno-0-95">95</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="k">def</span> <span class="nf">collect_throughput_metrics</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]]]:</span>
3643
-<a id="__codelineno-0-67" name="__codelineno-0-67"></a><span class="w"> </span><span class="sd">"""</span>
3644
-<a id="__codelineno-0-68" name="__codelineno-0-68"></a><span class="sd"> Collects the following Graylog Metrics:</span>
3645
-<a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="sd"> - Input Usage</span>
3646
-<a id="__codelineno-0-70" name="__codelineno-0-70"></a><span class="sd"> - Output Usage</span>
3647
-<a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="sd"> - Processor Usage</span>
3648
-<a id="__codelineno-0-72" name="__codelineno-0-72"></a><span class="sd"> - Input 1 Seconds Rate</span>
3649
-<a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="sd"> - Output 1 Seconds Rate</span>
3650
-<a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="sd"> - Total Input</span>
3651
-<a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="sd"> - Total Output</span>
3652
-<a id="__codelineno-0-76" name="__codelineno-0-76"></a>
3653
-<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> Returns:</span>
3654
-<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="sd"> dict: A dictionary containing the success status, a message, and the list of throughput metrics.</span>
3655
-<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> """</span>
3656
-<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="k">if</span> <span class="p">(</span>
3657
-<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
3658
-<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
3659
-<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
3660
-<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="p">):</span>
3661
-<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
3662
-<a id="__codelineno-0-86" name="__codelineno-0-86"></a>
3663
-<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="n">throughput_usage</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_metrics_throughput_usage</span><span class="p">(</span>
3664
-<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
3665
-<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
3666
-<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
3667
-<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="p">)</span>
3668
-<a id="__codelineno-0-92" name="__codelineno-0-92"></a>
3669
-<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="k">if</span> <span class="n">throughput_usage</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
3670
-<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="k">return</span> <span class="n">throughput_usage</span>
3671
-<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="k">return</span> <span class="n">throughput_usage</span>
3676
+<span class="normal"><a href="#__codelineno-0-95">95</a></span>
3677
+<span class="normal"><a href="#__codelineno-0-96">96</a></span>
3678
+<span class="normal"><a href="#__codelineno-0-97">97</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="k">def</span> <span class="nf">collect_throughput_metrics</span><span class="p">(</span>
3679
+<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="bp">self</span><span class="p">,</span>
3680
+<a id="__codelineno-0-68" name="__codelineno-0-68"></a><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]]]:</span>
3681
+<a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="w"> </span><span class="sd">"""</span>
3682
+<a id="__codelineno-0-70" name="__codelineno-0-70"></a><span class="sd"> Collects the following Graylog Metrics:</span>
3683
+<a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="sd"> - Input Usage</span>
3684
+<a id="__codelineno-0-72" name="__codelineno-0-72"></a><span class="sd"> - Output Usage</span>
3685
+<a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="sd"> - Processor Usage</span>
3686
+<a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="sd"> - Input 1 Seconds Rate</span>
3687
+<a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="sd"> - Output 1 Seconds Rate</span>
3688
+<a id="__codelineno-0-76" name="__codelineno-0-76"></a><span class="sd"> - Total Input</span>
3689
+<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> - Total Output</span>
3690
+<a id="__codelineno-0-78" name="__codelineno-0-78"></a>
3691
+<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> Returns:</span>
3692
+<a id="__codelineno-0-80" name="__codelineno-0-80"></a><span class="sd"> dict: A dictionary containing the success status, a message, and the list of throughput metrics.</span>
3693
+<a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="sd"> """</span>
3694
+<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="k">if</span> <span class="p">(</span>
3695
+<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span> <span class="ow">is</span> <span class="kc">None</span>
3696
+<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span> <span class="ow">is</span> <span class="kc">None</span>
3697
+<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span> <span class="ow">is</span> <span class="kc">None</span>
3698
+<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="p">):</span>
3699
+<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">"message"</span><span class="p">:</span> <span class="s2">"Failed to collect Graylog details"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
3700
+<a id="__codelineno-0-88" name="__codelineno-0-88"></a>
3701
+<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="n">throughput_usage</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collect_metrics_throughput_usage</span><span class="p">(</span>
3702
+<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_url</span><span class="p">,</span>
3703
+<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_username</span><span class="p">,</span>
3704
+<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="bp">self</span><span class="o">.</span><span class="n">connector_password</span><span class="p">,</span>
3705
+<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="p">)</span>
3706
+<a id="__codelineno-0-94" name="__codelineno-0-94"></a>
3707
+<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="k">if</span> <span class="n">throughput_usage</span><span class="p">[</span><span class="s2">"success"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
3708
+<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="k">return</span> <span class="n">throughput_usage</span>
3709
+<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="k">return</span> <span class="n">throughput_usage</span>
3710
</code></pre></div></td></tr></table></div>
3711
</details>
3712
</div>
@@ -3817,7 +3855,8 @@ This class inherits from SQLAlchemy's Model class.</p>
3855
3856
<details class="quote">
3857
<summary>Source code in <code>app\services\Graylog\universal.py</code></summary>
3820
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-6"> 6</a></span>
3858
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-5"> 5</a></span>
3859
+<span class="normal"><a href="#__codelineno-0-6"> 6</a></span>
3860
<span class="normal"><a href="#__codelineno-0-7"> 7</a></span>
3861
<span class="normal"><a href="#__codelineno-0-8"> 8</a></span>
3862
<span class="normal"><a href="#__codelineno-0-9"> 9</a></span>
@@ -3844,36 +3883,35 @@ This class inherits from SQLAlchemy's Model class.</p>
3883
<span class="normal"><a href="#__codelineno-0-30">30</a></span>
3884
<span class="normal"><a href="#__codelineno-0-31">31</a></span>
3885
<span class="normal"><a href="#__codelineno-0-32">32</a></span>
3847
-<span class="normal"><a href="#__codelineno-0-33">33</a></span>
3848
-<span class="normal"><a href="#__codelineno-0-34">34</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-6" name="__codelineno-0-6"></a><span class="k">class</span> <span class="nc">UniversalService</span><span class="p">:</span>
3849
-<a id="__codelineno-0-7" name="__codelineno-0-7"></a><span class="w"> </span><span class="sd">"""</span>
3850
-<a id="__codelineno-0-8" name="__codelineno-0-8"></a><span class="sd"> A service class that encapsulates the logic for polling messages from Graylog.</span>
3851
-<a id="__codelineno-0-9" name="__codelineno-0-9"></a><span class="sd"> """</span>
3852
-<a id="__codelineno-0-10" name="__codelineno-0-10"></a>
3853
-<a id="__codelineno-0-11" name="__codelineno-0-11"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
3854
-<a id="__codelineno-0-12" name="__codelineno-0-12"></a> <span class="bp">self</span><span class="o">.</span><span class="n">collect_graylog_details</span><span class="p">(</span><span class="s2">"Graylog"</span><span class="p">)</span>
3855
-<a id="__codelineno-0-13" name="__codelineno-0-13"></a>
3856
-<a id="__codelineno-0-14" name="__codelineno-0-14"></a> <span class="k">def</span> <span class="nf">collect_graylog_details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">:</span>
3857
-<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="w"> </span><span class="sd">"""</span>
3858
-<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> Collects the details of the Graylog connector.</span>
3859
-<a id="__codelineno-0-17" name="__codelineno-0-17"></a>
3860
-<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> Args:</span>
3861
-<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> connector_name (str): The name of the Graylog connector.</span>
3862
-<a id="__codelineno-0-20" name="__codelineno-0-20"></a>
3863
-<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> Returns:</span>
3864
-<a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="sd"> tuple: A tuple containing the connection URL, username, and password.</span>
3865
-<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="sd"> """</span>
3866
-<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
3867
-<a id="__codelineno-0-25" name="__codelineno-0-25"></a> <span class="n">connection_successful</span> <span class="o">=</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">()</span>
3868
-<a id="__codelineno-0-26" name="__codelineno-0-26"></a> <span class="k">if</span> <span class="n">connection_successful</span><span class="p">:</span>
3869
-<a id="__codelineno-0-27" name="__codelineno-0-27"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
3870
-<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="k">return</span> <span class="p">(</span>
3871
-<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_url"</span><span class="p">),</span>
3872
-<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_username"</span><span class="p">),</span>
3873
-<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_password"</span><span class="p">),</span>
3874
-<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="p">)</span>
3875
-<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="k">else</span><span class="p">:</span>
3876
-<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
3886
+<span class="normal"><a href="#__codelineno-0-33">33</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-5" name="__codelineno-0-5"></a><span class="k">class</span> <span class="nc">UniversalService</span><span class="p">:</span>
3887
+<a id="__codelineno-0-6" name="__codelineno-0-6"></a><span class="w"> </span><span class="sd">"""</span>
3888
+<a id="__codelineno-0-7" name="__codelineno-0-7"></a><span class="sd"> A service class that encapsulates the logic for polling messages from Graylog.</span>
3889
+<a id="__codelineno-0-8" name="__codelineno-0-8"></a><span class="sd"> """</span>
3890
+<a id="__codelineno-0-9" name="__codelineno-0-9"></a>
3891
+<a id="__codelineno-0-10" name="__codelineno-0-10"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
3892
+<a id="__codelineno-0-11" name="__codelineno-0-11"></a> <span class="bp">self</span><span class="o">.</span><span class="n">collect_graylog_details</span><span class="p">(</span><span class="s2">"Graylog"</span><span class="p">)</span>
3893
+<a id="__codelineno-0-12" name="__codelineno-0-12"></a>
3894
+<a id="__codelineno-0-13" name="__codelineno-0-13"></a> <span class="k">def</span> <span class="nf">collect_graylog_details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">:</span>
3895
+<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="w"> </span><span class="sd">"""</span>
3896
+<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> Collects the details of the Graylog connector.</span>
3897
+<a id="__codelineno-0-16" name="__codelineno-0-16"></a>
3898
+<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> Args:</span>
3899
+<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> connector_name (str): The name of the Graylog connector.</span>
3900
+<a id="__codelineno-0-19" name="__codelineno-0-19"></a>
3901
+<a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> Returns:</span>
3902
+<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> tuple: A tuple containing the connection URL, username, and password.</span>
3903
+<a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="sd"> """</span>
3904
+<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
3905
+<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="n">connection_successful</span> <span class="o">=</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">()</span>
3906
+<a id="__codelineno-0-25" name="__codelineno-0-25"></a> <span class="k">if</span> <span class="n">connection_successful</span><span class="p">:</span>
3907
+<a id="__codelineno-0-26" name="__codelineno-0-26"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
3908
+<a id="__codelineno-0-27" name="__codelineno-0-27"></a> <span class="k">return</span> <span class="p">(</span>
3909
+<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_url"</span><span class="p">),</span>
3910
+<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_username"</span><span class="p">),</span>
3911
+<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_password"</span><span class="p">),</span>
3912
+<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="p">)</span>
3913
+<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="k">else</span><span class="p">:</span>
3914
+<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
3915
</code></pre></div></td></tr></table></div>
3916
</details>
3917
@@ -3955,7 +3993,8 @@ This class inherits from SQLAlchemy's Model class.</p>
3993
3994
<details class="quote">
3995
<summary>Source code in <code>app\services\Graylog\universal.py</code></summary>
3958
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-14">14</a></span>
3996
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-13">13</a></span>
3997
+<span class="normal"><a href="#__codelineno-0-14">14</a></span>
3998
<span class="normal"><a href="#__codelineno-0-15">15</a></span>
3999
<span class="normal"><a href="#__codelineno-0-16">16</a></span>
4000
<span class="normal"><a href="#__codelineno-0-17">17</a></span>
@@ -3974,28 +4013,27 @@ This class inherits from SQLAlchemy's Model class.</p>
4013
<span class="normal"><a href="#__codelineno-0-30">30</a></span>
4014
<span class="normal"><a href="#__codelineno-0-31">31</a></span>
4015
<span class="normal"><a href="#__codelineno-0-32">32</a></span>
3977
-<span class="normal"><a href="#__codelineno-0-33">33</a></span>
3978
-<span class="normal"><a href="#__codelineno-0-34">34</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="k">def</span> <span class="nf">collect_graylog_details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">:</span>
3979
-<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="w"> </span><span class="sd">"""</span>
3980
-<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> Collects the details of the Graylog connector.</span>
3981
-<a id="__codelineno-0-17" name="__codelineno-0-17"></a>
3982
-<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> Args:</span>
3983
-<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> connector_name (str): The name of the Graylog connector.</span>
3984
-<a id="__codelineno-0-20" name="__codelineno-0-20"></a>
3985
-<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> Returns:</span>
3986
-<a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="sd"> tuple: A tuple containing the connection URL, username, and password.</span>
3987
-<a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="sd"> """</span>
3988
-<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
3989
-<a id="__codelineno-0-25" name="__codelineno-0-25"></a> <span class="n">connection_successful</span> <span class="o">=</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">()</span>
3990
-<a id="__codelineno-0-26" name="__codelineno-0-26"></a> <span class="k">if</span> <span class="n">connection_successful</span><span class="p">:</span>
3991
-<a id="__codelineno-0-27" name="__codelineno-0-27"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
3992
-<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="k">return</span> <span class="p">(</span>
3993
-<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_url"</span><span class="p">),</span>
3994
-<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_username"</span><span class="p">),</span>
3995
-<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_password"</span><span class="p">),</span>
3996
-<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="p">)</span>
3997
-<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="k">else</span><span class="p">:</span>
3998
-<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
4016
+<span class="normal"><a href="#__codelineno-0-33">33</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="k">def</span> <span class="nf">collect_graylog_details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">:</span>
4017
+<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="w"> </span><span class="sd">"""</span>
4018
+<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="sd"> Collects the details of the Graylog connector.</span>
4019
+<a id="__codelineno-0-16" name="__codelineno-0-16"></a>
4020
+<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> Args:</span>
4021
+<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> connector_name (str): The name of the Graylog connector.</span>
4022
+<a id="__codelineno-0-19" name="__codelineno-0-19"></a>
4023
+<a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> Returns:</span>
4024
+<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> tuple: A tuple containing the connection URL, username, and password.</span>
4025
+<a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="sd"> """</span>
4026
+<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="n">connector_instance</span> <span class="o">=</span> <span class="n">connector_factory</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">connector_name</span><span class="p">,</span> <span class="n">connector_name</span><span class="p">)</span>
4027
+<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="n">connection_successful</span> <span class="o">=</span> <span class="n">connector_instance</span><span class="o">.</span><span class="n">verify_connection</span><span class="p">()</span>
4028
+<a id="__codelineno-0-25" name="__codelineno-0-25"></a> <span class="k">if</span> <span class="n">connection_successful</span><span class="p">:</span>
4029
+<a id="__codelineno-0-26" name="__codelineno-0-26"></a> <span class="n">connection_details</span> <span class="o">=</span> <span class="n">Connector</span><span class="o">.</span><span class="n">get_connector_info_from_db</span><span class="p">(</span><span class="n">connector_name</span><span class="p">)</span>
4030
+<a id="__codelineno-0-27" name="__codelineno-0-27"></a> <span class="k">return</span> <span class="p">(</span>
4031
+<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_url"</span><span class="p">),</span>
4032
+<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_username"</span><span class="p">),</span>
4033
+<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="n">connection_details</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"connector_password"</span><span class="p">),</span>
4034
+<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="p">)</span>
4035
+<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="k">else</span><span class="p">:</span>
4036
+<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
4037
</code></pre></div></td></tr></table></div>
4038
</details>
4039
</div>
backend/site/sitemap.xml.gz
Binary files a/backend/site/sitemap.xml.gz and b/backend/site/sitemap.xml.gz differ