This function filters devices based on their reachability and an optional OS category filter. It supports:
- Broad OS categories (e.g.,
"Linux"includes all OS versions under"Linux") - Specific OS categories (e.g.,
"Debian"only includes OS versions under"Linux" -> "Debian") - Single category selection (Only
target_os="Linux"ORtarget_os="Debian"is used, never both at once)
The function first expands the target_os category by retrieving all valid OS names under it.
{
"Linux": {
"Debian": [
"Debian GNU/Linux 12 (bookworm)",
"Debian GNU/Linux 11 (bullseye)"
],
"Ubuntu": [
"Ubuntu 24.04.1 LTS"
]
}
}target_os |
Expanded OS Versions |
|---|---|
"Linux" |
{ "Debian GNU/Linux 12 (bookworm)", "Debian GNU/Linux 11 (bullseye)", "Ubuntu 24.04.1 LTS" } |
"Debian" |
{ "Debian GNU/Linux 12 (bookworm)", "Debian GNU/Linux 11 (bullseye)" } |
Once the function has the allowed OS versions, it checks each device:
[
{"device_id": "A1", "device_os": "Debian GNU/Linux 12 (bookworm)", "reachable": true},
{"device_id": "A2", "device_os": "Ubuntu 24.04.1 LTS", "reachable": true},
{"device_id": "A3", "device_os": "Windows 11", "reachable": true},
{"device_id": "A4", "device_os": "Debian GNU/Linux 11 (bullseye)", "reachable": false}
]| Device ID | Device OS | Reachable | Matches target_os="Linux" |
Matches target_os="Debian" |
|---|---|---|---|---|
| A1 | Debian GNU/Linux 12 (bookworm) | ✅ | ✅ | ✅ |
| A2 | Ubuntu 24.04.1 LTS | ✅ | ✅ | ❌ |
| A3 | Windows 11 | ✅ | ❌ | ❌ |
| A4 | Debian GNU/Linux 11 (bullseye) | ❌ | ❌ (Unreachable) | ❌ (Unreachable) |
- If
target_os="Linux":["A1", "A2"] - If
target_os="Debian":["A1"] - If
target_os=Noneortarget_osis undefined:["A1", "A2", "A3"]