feat: Implement Homelab Automation API v2, introducing a new dashboard, comprehensive backend models, and API routes.
Tests / Backend Tests (Python) (3.10) (push) Has been cancelled
Tests / Backend Tests (Python) (3.11) (push) Has been cancelled
Tests / Backend Tests (Python) (3.12) (push) Has been cancelled
Tests / Frontend Tests (JS) (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Tests / All Tests Passed (push) Has been cancelled
Tests / Backend Tests (Python) (3.10) (push) Has been cancelled
Tests / Backend Tests (Python) (3.11) (push) Has been cancelled
Tests / Backend Tests (Python) (3.12) (push) Has been cancelled
Tests / Frontend Tests (JS) (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Tests / All Tests Passed (push) Has been cancelled
This commit is contained in:
File diff suppressed because one or more lines are too long
+58
@@ -0,0 +1,58 @@
|
||||
# ✅ Vérification de santé
|
||||
|
||||
## Informations
|
||||
|
||||
| Propriété | Valeur |
|
||||
|-----------|--------|
|
||||
| **ID** | `64ab11d0c9b845a5931d685fff03b46b` |
|
||||
| **Nom** | Vérification de santé |
|
||||
| **Cible** | `hp2.i7.home` |
|
||||
| **Statut** | completed |
|
||||
| **Type** | Manuel |
|
||||
| **Progression** | 100% |
|
||||
| **Début** | 2026-03-05T20:08:24.766043+00:00 |
|
||||
| **Fin** | 2026-03-05T20:08:29.280543+00:00 |
|
||||
| **Durée** | 4.5s |
|
||||
|
||||
## Sortie
|
||||
|
||||
```
|
||||
Using /mnt/c/dev/git/python/homelab-automation-api-v2/ansible/ansible.cfg as config file
|
||||
|
||||
PLAY [Health check on target host] *********************************************
|
||||
|
||||
TASK [Check if host is reachable (ping)] ***************************************
|
||||
ok: [hp2.i7.home] => {"changed": false, "ping": "pong"}
|
||||
|
||||
TASK [Gather minimal facts] ****************************************************
|
||||
ok: [hp2.i7.home]
|
||||
|
||||
TASK [Get system uptime] *******************************************************
|
||||
ok: [hp2.i7.home] => {"changed": false, "cmd": ["uptime"], "delta": "0:00:00.003591", "end": "2026-03-05 15:08:28.105850", "msg": "", "rc": 0, "start": "2026-03-05 15:08:28.102259", "stderr": "", "stderr_lines": [], "stdout": " 15:08:28 up 70 days, 3:25, 1 user, load average: 1.07, 1.05, 1.06", "stdout_lines": [" 15:08:28 up 70 days, 3:25, 1 user, load average: 1.07, 1.05, 1.06"]}
|
||||
|
||||
TASK [Get disk usage] **********************************************************
|
||||
ok: [hp2.i7.home] => {"changed": false, "cmd": "df -h / | tail -1 | awk '{print $5}'", "delta": "0:00:00.005100", "end": "2026-03-05 15:08:28.476038", "msg": "", "rc": 0, "start": "2026-03-05 15:08:28.470938", "stderr": "", "stderr_lines": [], "stdout": "15%", "stdout_lines": ["15%"]}
|
||||
|
||||
TASK [Get memory usage (Linux)] ************************************************
|
||||
ok: [hp2.i7.home] => {"changed": false, "cmd": "if command -v free >/dev/null 2>&1; then\n free -m | grep Mem | awk '{printf \"%.1f%%\", $3/$2 * 100}'\nelse\n # Fallback for systems without free command\n cat /proc/meminfo | awk '/MemTotal/{total=$2} /MemAvailable/{avail=$2} END{printf \"%.1f%%\", (total-avail)/total*100}'\nfi\n", "delta": "0:00:00.005330", "end": "2026-03-05 15:08:28.867007", "msg": "", "rc": 0, "start": "2026-03-05 15:08:28.861677", "stderr": "", "stderr_lines": [], "stdout": "79.3%", "stdout_lines": ["79.3%"]}
|
||||
|
||||
TASK [Get CPU temperature (ARM/SBC)] *******************************************
|
||||
ok: [hp2.i7.home] => {"changed": false, "cmd": "if [ -f /sys/class/thermal/thermal_zone0/temp ]; then\n temp=$(cat /sys/class/thermal/thermal_zone0/temp)\n # Use awk instead of bc for better compatibility\n echo \"${temp}\" | awk '{printf \"%.1f°C\", $1/1000}'\nelse\n echo \"N/A\"\nfi\n", "delta": "0:00:00.005991", "end": "2026-03-05 15:08:29.240664", "msg": "", "rc": 0, "start": "2026-03-05 15:08:29.234673", "stderr": "cat: /sys/class/thermal/thermal_zone0/temp: No data available", "stderr_lines": ["cat: /sys/class/thermal/thermal_zone0/temp: No data available"], "stdout": "0.0°C", "stdout_lines": ["0.0°C"]}
|
||||
|
||||
TASK [Get CPU load] ************************************************************
|
||||
ok: [hp2.i7.home] => {"changed": false, "cmd": "if [ -f /proc/loadavg ]; then\n cat /proc/loadavg | awk '{print $1}'\nelse\n uptime | awk -F'load average:' '{print $2}' | awk -F',' '{print $1}' | tr -d ' '\nfi\n", "delta": "0:00:00.004682", "end": "2026-03-05 15:08:29.597432", "msg": "", "rc": 0, "start": "2026-03-05 15:08:29.592750", "stderr": "", "stderr_lines": [], "stdout": "1.07", "stdout_lines": ["1.07"]}
|
||||
|
||||
TASK [Display health status] ***************************************************
|
||||
ok: [hp2.i7.home] => {
|
||||
"msg": "═══════════════════════════════════════\nHost: hp2.i7.home\nStatus: OK\n═══════════════════════════════════════\nUptime: 15:08:28 up 70 days, 3:25, 1 user, load average: 1.07, 1.05, 1.06\nDisk Usage: 15%\nMemory Usage: 79.3%\nCPU Load: 1.07\nCPU Temp: 0.0°C\n═══════════════════════════════════════\n"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
hp2.i7.home : ok=8 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
*Généré automatiquement par Homelab Automation Dashboard*
|
||||
*Date: 2026-03-05T20:08:29.316172+00:00*
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
# ✅ Vérification de santé
|
||||
|
||||
## Informations
|
||||
|
||||
| Propriété | Valeur |
|
||||
|-----------|--------|
|
||||
| **ID** | `cfe04d1f88664f4180b6e843fb8903c2` |
|
||||
| **Nom** | Vérification de santé |
|
||||
| **Cible** | `jump.point.home` |
|
||||
| **Statut** | completed |
|
||||
| **Type** | Manuel |
|
||||
| **Progression** | 100% |
|
||||
| **Début** | 2026-03-05T20:09:01.401458+00:00 |
|
||||
| **Fin** | 2026-03-05T20:09:06.027820+00:00 |
|
||||
| **Durée** | 4.6s |
|
||||
|
||||
## Sortie
|
||||
|
||||
```
|
||||
Using /mnt/c/dev/git/python/homelab-automation-api-v2/ansible/ansible.cfg as config file
|
||||
|
||||
PLAY [Health check on target host] *********************************************
|
||||
|
||||
TASK [Check if host is reachable (ping)] ***************************************
|
||||
ok: [jump.point.home] => {"changed": false, "ping": "pong"}
|
||||
|
||||
TASK [Gather minimal facts] ****************************************************
|
||||
ok: [jump.point.home]
|
||||
|
||||
TASK [Get system uptime] *******************************************************
|
||||
ok: [jump.point.home] => {"changed": false, "cmd": ["uptime"], "delta": "0:00:00.007365", "end": "2026-03-05 15:09:04.864969", "msg": "", "rc": 0, "start": "2026-03-05 15:09:04.857604", "stderr": "", "stderr_lines": [], "stdout": " 15:09:04 up 37 days, 5:55, 2 users, load average: 0.05, 0.41, 0.50", "stdout_lines": [" 15:09:04 up 37 days, 5:55, 2 users, load average: 0.05, 0.41, 0.50"]}
|
||||
|
||||
TASK [Get disk usage] **********************************************************
|
||||
ok: [jump.point.home] => {"changed": false, "cmd": "df -h / | tail -1 | awk '{print $5}'", "delta": "0:00:00.005618", "end": "2026-03-05 15:09:05.261897", "msg": "", "rc": 0, "start": "2026-03-05 15:09:05.256279", "stderr": "", "stderr_lines": [], "stdout": "89%", "stdout_lines": ["89%"]}
|
||||
|
||||
TASK [Get memory usage (Linux)] ************************************************
|
||||
ok: [jump.point.home] => {"changed": false, "cmd": "if command -v free >/dev/null 2>&1; then\n free -m | grep Mem | awk '{printf \"%.1f%%\", $3/$2 * 100}'\nelse\n # Fallback for systems without free command\n cat /proc/meminfo | awk '/MemTotal/{total=$2} /MemAvailable/{avail=$2} END{printf \"%.1f%%\", (total-avail)/total*100}'\nfi\n", "delta": "0:00:00.006593", "end": "2026-03-05 15:09:05.685701", "msg": "", "rc": 0, "start": "2026-03-05 15:09:05.679108", "stderr": "", "stderr_lines": [], "stdout": "43.6%", "stdout_lines": ["43.6%"]}
|
||||
|
||||
TASK [Get CPU temperature (ARM/SBC)] *******************************************
|
||||
ok: [jump.point.home] => {"changed": false, "cmd": "if [ -f /sys/class/thermal/thermal_zone0/temp ]; then\n temp=$(cat /sys/class/thermal/thermal_zone0/temp)\n # Use awk instead of bc for better compatibility\n echo \"${temp}\" | awk '{printf \"%.1f°C\", $1/1000}'\nelse\n echo \"N/A\"\nfi\n", "delta": "0:00:00.003109", "end": "2026-03-05 15:09:06.112325", "msg": "", "rc": 0, "start": "2026-03-05 15:09:06.109216", "stderr": "", "stderr_lines": [], "stdout": "N/A", "stdout_lines": ["N/A"]}
|
||||
|
||||
TASK [Get CPU load] ************************************************************
|
||||
ok: [jump.point.home] => {"changed": false, "cmd": "if [ -f /proc/loadavg ]; then\n cat /proc/loadavg | awk '{print $1}'\nelse\n uptime | awk -F'load average:' '{print $2}' | awk -F',' '{print $1}' | tr -d ' '\nfi\n", "delta": "0:00:00.005663", "end": "2026-03-05 15:09:06.539325", "msg": "", "rc": 0, "start": "2026-03-05 15:09:06.533662", "stderr": "", "stderr_lines": [], "stdout": "0.21", "stdout_lines": ["0.21"]}
|
||||
|
||||
TASK [Display health status] ***************************************************
|
||||
ok: [jump.point.home] => {
|
||||
"msg": "═══════════════════════════════════════\nHost: jump.point.home\nStatus: OK\n═══════════════════════════════════════\nUptime: 15:09:04 up 37 days, 5:55, 2 users, load average: 0.05, 0.41, 0.50\nDisk Usage: 89%\nMemory Usage: 43.6%\nCPU Load: 0.21\nCPU Temp: N/A\n═══════════════════════════════════════\n"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
jump.point.home : ok=8 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
*Généré automatiquement par Homelab Automation Dashboard*
|
||||
*Date: 2026-03-05T20:09:06.052758+00:00*
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
# ✅ Vérification de santé
|
||||
|
||||
## Informations
|
||||
|
||||
| Propriété | Valeur |
|
||||
|-----------|--------|
|
||||
| **ID** | `b215dc1180fd4d4a9b58092068b94204` |
|
||||
| **Nom** | Vérification de santé |
|
||||
| **Cible** | `jump.point.home` |
|
||||
| **Statut** | completed |
|
||||
| **Type** | Manuel |
|
||||
| **Progression** | 100% |
|
||||
| **Début** | 2026-03-05T20:10:32.275481+00:00 |
|
||||
| **Fin** | 2026-03-05T20:10:37.121800+00:00 |
|
||||
| **Durée** | 4.8s |
|
||||
|
||||
## Sortie
|
||||
|
||||
```
|
||||
Using /mnt/c/dev/git/python/homelab-automation-api-v2/ansible/ansible.cfg as config file
|
||||
|
||||
PLAY [Health check on target host] *********************************************
|
||||
|
||||
TASK [Check if host is reachable (ping)] ***************************************
|
||||
ok: [jump.point.home] => {"changed": false, "ping": "pong"}
|
||||
|
||||
TASK [Gather minimal facts] ****************************************************
|
||||
ok: [jump.point.home]
|
||||
|
||||
TASK [Get system uptime] *******************************************************
|
||||
ok: [jump.point.home] => {"changed": false, "cmd": ["uptime"], "delta": "0:00:00.003997", "end": "2026-03-05 15:10:35.923491", "msg": "", "rc": 0, "start": "2026-03-05 15:10:35.919494", "stderr": "", "stderr_lines": [], "stdout": " 15:10:35 up 37 days, 5:56, 2 users, load average: 0.64, 0.53, 0.54", "stdout_lines": [" 15:10:35 up 37 days, 5:56, 2 users, load average: 0.64, 0.53, 0.54"]}
|
||||
|
||||
TASK [Get disk usage] **********************************************************
|
||||
ok: [jump.point.home] => {"changed": false, "cmd": "df -h / | tail -1 | awk '{print $5}'", "delta": "0:00:00.005599", "end": "2026-03-05 15:10:36.334270", "msg": "", "rc": 0, "start": "2026-03-05 15:10:36.328671", "stderr": "", "stderr_lines": [], "stdout": "89%", "stdout_lines": ["89%"]}
|
||||
|
||||
TASK [Get memory usage (Linux)] ************************************************
|
||||
ok: [jump.point.home] => {"changed": false, "cmd": "if command -v free >/dev/null 2>&1; then\n free -m | grep Mem | awk '{printf \"%.1f%%\", $3/$2 * 100}'\nelse\n # Fallback for systems without free command\n cat /proc/meminfo | awk '/MemTotal/{total=$2} /MemAvailable/{avail=$2} END{printf \"%.1f%%\", (total-avail)/total*100}'\nfi\n", "delta": "0:00:00.005740", "end": "2026-03-05 15:10:36.736818", "msg": "", "rc": 0, "start": "2026-03-05 15:10:36.731078", "stderr": "", "stderr_lines": [], "stdout": "43.8%", "stdout_lines": ["43.8%"]}
|
||||
|
||||
TASK [Get CPU temperature (ARM/SBC)] *******************************************
|
||||
ok: [jump.point.home] => {"changed": false, "cmd": "if [ -f /sys/class/thermal/thermal_zone0/temp ]; then\n temp=$(cat /sys/class/thermal/thermal_zone0/temp)\n # Use awk instead of bc for better compatibility\n echo \"${temp}\" | awk '{printf \"%.1f°C\", $1/1000}'\nelse\n echo \"N/A\"\nfi\n", "delta": "0:00:00.003495", "end": "2026-03-05 15:10:37.139141", "msg": "", "rc": 0, "start": "2026-03-05 15:10:37.135646", "stderr": "", "stderr_lines": [], "stdout": "N/A", "stdout_lines": ["N/A"]}
|
||||
|
||||
TASK [Get CPU load] ************************************************************
|
||||
ok: [jump.point.home] => {"changed": false, "cmd": "if [ -f /proc/loadavg ]; then\n cat /proc/loadavg | awk '{print $1}'\nelse\n uptime | awk -F'load average:' '{print $2}' | awk -F',' '{print $1}' | tr -d ' '\nfi\n", "delta": "0:00:00.005633", "end": "2026-03-05 15:10:37.541890", "msg": "", "rc": 0, "start": "2026-03-05 15:10:37.536257", "stderr": "", "stderr_lines": [], "stdout": "0.58", "stdout_lines": ["0.58"]}
|
||||
|
||||
TASK [Display health status] ***************************************************
|
||||
ok: [jump.point.home] => {
|
||||
"msg": "═══════════════════════════════════════\nHost: jump.point.home\nStatus: OK\n═══════════════════════════════════════\nUptime: 15:10:35 up 37 days, 5:56, 2 users, load average: 0.64, 0.53, 0.54\nDisk Usage: 89%\nMemory Usage: 43.8%\nCPU Load: 0.58\nCPU Temp: N/A\n═══════════════════════════════════════\n"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
jump.point.home : ok=8 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
*Généré automatiquement par Homelab Automation Dashboard*
|
||||
*Date: 2026-03-05T20:10:37.157542+00:00*
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
# ✅ Vérification de santé
|
||||
|
||||
## Informations
|
||||
|
||||
| Propriété | Valeur |
|
||||
|-----------|--------|
|
||||
| **ID** | `339d9caa768a4303970c8a8e91ad81f7` |
|
||||
| **Nom** | Vérification de santé |
|
||||
| **Cible** | `jump.point.home` |
|
||||
| **Statut** | completed |
|
||||
| **Type** | Manuel |
|
||||
| **Progression** | 100% |
|
||||
| **Début** | 2026-03-05T20:11:28.307152+00:00 |
|
||||
| **Fin** | 2026-03-05T20:11:32.561895+00:00 |
|
||||
| **Durée** | 4.3s |
|
||||
|
||||
## Sortie
|
||||
|
||||
```
|
||||
Using /mnt/c/dev/git/python/homelab-automation-api-v2/ansible/ansible.cfg as config file
|
||||
|
||||
PLAY [Health check on target host] *********************************************
|
||||
|
||||
TASK [Check if host is reachable (ping)] ***************************************
|
||||
ok: [jump.point.home] => {"changed": false, "ping": "pong"}
|
||||
|
||||
TASK [Gather minimal facts] ****************************************************
|
||||
ok: [jump.point.home]
|
||||
|
||||
TASK [Get system uptime] *******************************************************
|
||||
ok: [jump.point.home] => {"changed": false, "cmd": ["uptime"], "delta": "0:00:00.003988", "end": "2026-03-05 15:11:31.056671", "msg": "", "rc": 0, "start": "2026-03-05 15:11:31.052683", "stderr": "", "stderr_lines": [], "stdout": " 15:11:31 up 37 days, 5:57, 2 users, load average: 0.63, 0.55, 0.54", "stdout_lines": [" 15:11:31 up 37 days, 5:57, 2 users, load average: 0.63, 0.55, 0.54"]}
|
||||
|
||||
TASK [Get disk usage] **********************************************************
|
||||
ok: [jump.point.home] => {"changed": false, "cmd": "df -h / | tail -1 | awk '{print $5}'", "delta": "0:00:00.005665", "end": "2026-03-05 15:11:31.458475", "msg": "", "rc": 0, "start": "2026-03-05 15:11:31.452810", "stderr": "", "stderr_lines": [], "stdout": "89%", "stdout_lines": ["89%"]}
|
||||
|
||||
TASK [Get memory usage (Linux)] ************************************************
|
||||
ok: [jump.point.home] => {"changed": false, "cmd": "if command -v free >/dev/null 2>&1; then\n free -m | grep Mem | awk '{printf \"%.1f%%\", $3/$2 * 100}'\nelse\n # Fallback for systems without free command\n cat /proc/meminfo | awk '/MemTotal/{total=$2} /MemAvailable/{avail=$2} END{printf \"%.1f%%\", (total-avail)/total*100}'\nfi\n", "delta": "0:00:00.005694", "end": "2026-03-05 15:11:31.875636", "msg": "", "rc": 0, "start": "2026-03-05 15:11:31.869942", "stderr": "", "stderr_lines": [], "stdout": "43.7%", "stdout_lines": ["43.7%"]}
|
||||
|
||||
TASK [Get CPU temperature (ARM/SBC)] *******************************************
|
||||
ok: [jump.point.home] => {"changed": false, "cmd": "if [ -f /sys/class/thermal/thermal_zone0/temp ]; then\n temp=$(cat /sys/class/thermal/thermal_zone0/temp)\n # Use awk instead of bc for better compatibility\n echo \"${temp}\" | awk '{printf \"%.1f°C\", $1/1000}'\nelse\n echo \"N/A\"\nfi\n", "delta": "0:00:00.003221", "end": "2026-03-05 15:11:32.275082", "msg": "", "rc": 0, "start": "2026-03-05 15:11:32.271861", "stderr": "", "stderr_lines": [], "stdout": "N/A", "stdout_lines": ["N/A"]}
|
||||
|
||||
TASK [Get CPU load] ************************************************************
|
||||
ok: [jump.point.home] => {"changed": false, "cmd": "if [ -f /proc/loadavg ]; then\n cat /proc/loadavg | awk '{print $1}'\nelse\n uptime | awk -F'load average:' '{print $2}' | awk -F',' '{print $1}' | tr -d ' '\nfi\n", "delta": "0:00:00.005658", "end": "2026-03-05 15:11:32.692291", "msg": "", "rc": 0, "start": "2026-03-05 15:11:32.686633", "stderr": "", "stderr_lines": [], "stdout": "0.90", "stdout_lines": ["0.90"]}
|
||||
|
||||
TASK [Display health status] ***************************************************
|
||||
ok: [jump.point.home] => {
|
||||
"msg": "═══════════════════════════════════════\nHost: jump.point.home\nStatus: OK\n═══════════════════════════════════════\nUptime: 15:11:31 up 37 days, 5:57, 2 users, load average: 0.63, 0.55, 0.54\nDisk Usage: 89%\nMemory Usage: 43.7%\nCPU Load: 0.90\nCPU Temp: N/A\n═══════════════════════════════════════\n"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
jump.point.home : ok=8 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
*Généré automatiquement par Homelab Automation Dashboard*
|
||||
*Date: 2026-03-05T20:11:32.600421+00:00*
|
||||
Reference in New Issue
Block a user