import logging
from prometheus_client import Counter, start_http_server
from kubeinfo import get_pod_name_by_ip

logger = logging.getLogger(__name__)

rtx_counter = Counter("tcp_retransmissions",
                      "Number of TCP retransmissions",
                      ["src_ip", "dst_ip", "src_port", "dst_port"])

logging.getLogger('prometheus_client.endpoint').setLevel(logging.INFO)


def record_retransmissions(src_ip, dst_ip, src_port, dst_port, count):
    """Record retransmission data to Prometheus."""
    src_pod_name = get_pod_name_by_ip(src_ip) or src_ip
    dst_pod_name = get_pod_name_by_ip(dst_ip) or dst_ip

    rtx_counter.labels(src_ip=src_ip, dst_ip=dst_ip,
                       src_port=src_port, dst_port=dst_port).inc(count)
    logger.info(f"Recorded retransmission for "
                f"{src_pod_name} ({src_ip}:{src_port}) -> "
                f"{dst_pod_name} ({dst_ip}:{dst_port}), Count: {count}")

def start_prometheus_server(port=9191):
    """Start the Prometheus metrics HTTP server."""
    start_http_server(port, addr='0.0.0.0')
    msg = f"Prometheus metrics server started on port: {port}"
    print(msg)
    logger.info(msg)


start_prometheus_server()
