feat: add container network filtering, enhance IP address display, and improve workload insights UI
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 29s

Add is_docker_or_container_network helper to detect Docker bridge, Kubernetes CNI, and loopback networks, implement cleanup_discovered_container_networks to remove container bridge IPs from discovered networks during IPAM discovery, add ip_address_payload helper to enrich IP addresses with subnet CIDR and workload details, update ProxmoxProvider to ignore guest interfaces matching common container pref
This commit is contained in:
2026-07-09 13:27:39 +02:00
parent 701835e9f3
commit b382d4362c
6 changed files with 129 additions and 32 deletions
+13 -3
View File
@@ -63,8 +63,8 @@ export function Ipam() {
async function discoverIpam() {
try {
const result = await api<{ imported: number; errors: Array<Record<string, unknown>> }>("/ipam/discover", { method: "POST" });
setMessage(`Discovery imported ${result.imported} IP addresses${result.errors.length ? " with errors" : ""}.`);
const result = await api<{ imported: number; removed: number; errors: Array<Record<string, unknown>> }>("/ipam/discover", { method: "POST" });
setMessage(`Discovery imported ${result.imported} IP addresses and removed ${result.removed} container bridge entries${result.errors.length ? " with errors" : ""}.`);
await queryClient.invalidateQueries({ queryKey: ["subnets"] });
await queryClient.invalidateQueries({ queryKey: ["addresses"] });
} catch (error) {
@@ -122,7 +122,17 @@ export function Ipam() {
</Modal>
<section className="space-y-4">
<DataTable rows={(subnets.data ?? []) as unknown as Record<string, unknown>[]} columns={[{ key: "cidr", label: "Subnet" }, { key: "gateway", label: "Gateway" }, { key: "dhcp_enabled", label: "DHCP" }]} />
<DataTable rows={(addresses.data ?? []) as unknown as Record<string, unknown>[]} columns={[{ key: "address", label: "Address" }, { key: "status", label: "Status" }, { key: "note", label: "Note" }]} />
<DataTable
rows={(addresses.data ?? []) as unknown as Record<string, unknown>[]}
columns={[
{ key: "address", label: "Address" },
{ key: "subnet_cidr", label: "Subnet" },
{ key: "status", label: "Status" },
{ key: "workload_name", label: "VM/LXC" },
{ key: "workload_external_id", label: "VMID" },
{ key: "note", label: "Note" },
]}
/>
</section>
</div>
</>