veza/config/incus/diagnose-network.sh
senke f0ba7de543 state-ownership: delete unused optimisticStoreUpdates.ts file
- Deleted apps/web/src/utils/optimisticStoreUpdates.ts (unused file)
- File was unused - no imports found in codebase
- Mutations already use React Query's onMutate pattern
- No TypeScript errors after deletion
- Actions 4.4.1.2 and 4.4.1.3 complete
2026-01-15 19:26:53 +01:00

131 lines
4.4 KiB
Bash
Executable file

#!/bin/bash
# Diagnose Incus network issues
# Usage: ./diagnose-network.sh [container-name]
set -euo pipefail
# Colors
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
NETWORK="veza-network"
CONTAINER="${1:-veza-infra}"
echo -e "${BLUE}🔍 Diagnosing Incus network issues${NC}"
echo ""
# 1. Host IP forwarding
echo -e "${BLUE}1. Host IP Forwarding:${NC}"
IP_FORWARD=$(cat /proc/sys/net/ipv4/ip_forward 2>/dev/null || echo "0")
if [ "${IP_FORWARD}" = "1" ]; then
echo -e "${GREEN} ✅ Enabled${NC}"
else
echo -e "${RED} ❌ Disabled (NAT will not work!)${NC}"
echo " Fix: echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward"
fi
# 2. Network configuration
echo -e "${BLUE}2. Network Configuration (${NETWORK}):${NC}"
if incus network show ${NETWORK} >/dev/null 2>&1; then
NAT=$(incus network show ${NETWORK} | grep "ipv4.nat" | awk '{print $2}' || echo "false")
DHCP=$(incus network show ${NETWORK} | grep "ipv4.dhcp" | awk '{print $2}' || echo "false")
if [ "${NAT}" = "\"true\"" ]; then
echo -e "${GREEN} ✅ NAT: Enabled${NC}"
else
echo -e "${RED} ❌ NAT: Disabled${NC}"
fi
if [ "${DHCP}" = "\"true\"" ]; then
echo -e "${GREEN} ✅ DHCP: Enabled${NC}"
else
echo -e "${YELLOW} ⚠️ DHCP: Disabled${NC}"
fi
else
echo -e "${RED} ❌ Network does not exist${NC}"
fi
# 3. Container network state
if incus list -c n --format csv 2>/dev/null | grep -q "^${CONTAINER}$"; then
echo -e "${BLUE}3. Container Network State (${CONTAINER}):${NC}"
# IP address
CONTAINER_IP=$(incus exec ${CONTAINER} -- ip addr show eth0 2>/dev/null | grep "inet " | awk '{print $2}' | cut -d'/' -f1 || echo "none")
if [ "${CONTAINER_IP}" != "none" ] && [ -n "${CONTAINER_IP}" ]; then
echo -e "${GREEN} ✅ IP: ${CONTAINER_IP}${NC}"
else
echo -e "${RED} ❌ IP: Not configured${NC}"
fi
# Default route
DEFAULT_ROUTE=$(incus exec ${CONTAINER} -- ip route | grep default || echo "none")
if [ "${DEFAULT_ROUTE}" != "none" ]; then
if echo "${DEFAULT_ROUTE}" | grep -q "10.10.10.1"; then
echo -e "${GREEN} ✅ Default route: ${DEFAULT_ROUTE}${NC}"
else
echo -e "${YELLOW} ⚠️ Default route: ${DEFAULT_ROUTE}${NC}"
fi
else
echo -e "${RED} ❌ Default route: Missing${NC}"
fi
# DNS
DNS=$(incus exec ${CONTAINER} -- cat /etc/resolv.conf 2>/dev/null | grep nameserver | head -1 || echo "none")
if [ "${DNS}" != "none" ]; then
echo -e "${GREEN} ✅ DNS: ${DNS}${NC}"
else
echo -e "${RED} ❌ DNS: Not configured${NC}"
fi
# Connectivity tests
echo -e "${BLUE}4. Connectivity Tests:${NC}"
# Gateway
if incus exec ${CONTAINER} -- ping -c 1 -W 1 10.10.10.1 >/dev/null 2>&1; then
echo -e "${GREEN} ✅ Gateway (10.10.10.1): Reachable${NC}"
else
echo -e "${RED} ❌ Gateway (10.10.10.1): Not reachable${NC}"
fi
# Internet
if incus exec ${CONTAINER} -- ping -c 1 -W 1 8.8.8.8 >/dev/null 2>&1; then
echo -e "${GREEN} ✅ Internet (8.8.8.8): Reachable${NC}"
else
echo -e "${RED} ❌ Internet (8.8.8.8): Not reachable${NC}"
fi
# DNS resolution
if incus exec ${CONTAINER} -- getent hosts google.com >/dev/null 2>&1; then
echo -e "${GREEN} ✅ DNS (google.com): Working${NC}"
else
echo -e "${RED} ❌ DNS (google.com): Failed${NC}"
fi
else
echo -e "${YELLOW} ⚠️ Container ${CONTAINER} does not exist${NC}"
fi
# 5. Bridge interface
echo -e "${BLUE}5. Bridge Interface:${NC}"
BRIDGE=$(ip -br link show | grep -E "incus|veza" | head -1 | awk '{print $1}' || echo "none")
if [ "${BRIDGE}" != "none" ]; then
echo -e "${GREEN} ✅ Bridge: ${BRIDGE}${NC}"
BRIDGE_STATE=$(ip link show ${BRIDGE} 2>/dev/null | grep -o "state [A-Z]*" | awk '{print $2}' || echo "unknown")
if [ "${BRIDGE_STATE}" = "UP" ]; then
echo -e "${GREEN} ✅ Bridge state: UP${NC}"
else
echo -e "${RED} ❌ Bridge state: ${BRIDGE_STATE}${NC}"
fi
else
echo -e "${YELLOW} ⚠️ Bridge interface not found${NC}"
fi
echo ""
echo -e "${BLUE}=== Summary ===${NC}"
echo "To fix network issues, run:"
echo " ./fix-network.sh ${CONTAINER}"
echo ""
echo "To fix all containers:"
echo " ./fix-all-containers-network.sh"