- Add exabgp/ container: ExaBGP 5.x + Flask REST API for on-demand BGP route injection into CML IOS-XR lab (AS 65020 via eBGP from AS 65100) - Add 6 injection scenarios: internet_sample, churn, blackhole, anycast, full_table, lab_prefixes - Add inject.py CLI wrapper for the ExaBGP API - Add iosxr_bgp_config.md with IOS-XR neighbor config and NETCONF script - Add obmp-grafana/ dashboards and provisioning (17 dashboards) - Update docker-compose.yml: add exabgp service, fix Kafka external listener IP, extend log retention from 90min to 720min - Add DOCS.md: full project documentation including architecture, setup, user guide, sanity checks, troubleshooting, and command reference - Update .gitignore: exclude .env and .claude/ Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
20 lines
463 B
Docker
20 lines
463 B
Docker
FROM python:3.11-slim
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
procps \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install ExaBGP and Flask API dependencies
|
|
RUN pip install --no-cache-dir exabgp flask requests
|
|
|
|
# ExaBGP writes its own config at startup; we just need the source tree
|
|
COPY . /exabgp/
|
|
WORKDIR /exabgp
|
|
|
|
RUN chmod +x /exabgp/startup.sh /exabgp/inject.py
|
|
|
|
# Flask API port
|
|
EXPOSE 5050
|
|
|
|
CMD ["/bin/bash", "/exabgp/startup.sh"]
|