network-automation-system

Hybrid LangGraph/LangChain/MCP Network Automation System with pyATS/Genie - Intelligent network device management with natural language interface

GitHubスター

0

ユーザー評価

未評価

フォーク

1

イシュー

0

閲覧数

2

お気に入り

0

README
Hybrid Network Automation System
LangGraph/LangChain/MCP with pyATS/Genie Integration

License: MIT Python 3.11+ FastAPI PostgreSQL

A comprehensive network automation system that combines the power of LangGraph workflow orchestration, LangChain natural language processing, and Model Context Protocol (MCP) for intelligent network device management.

🚀 Features
Core Capabilities
  • Natural Language Interface: Interact with network devices using conversational commands
  • Intelligent Workflow Orchestration: Complex multi-device operations with LangGraph
  • Rich Context Management: MCP-powered device and topology awareness
  • Multi-Vendor Support: pyATS/Genie integration for Cisco, Juniper, Arista, and more
  • Comprehensive Topology Discovery: Automated network mapping and relationship tracking
  • Enterprise Security: Role-based access control, audit logging, and credential management
Supported Platforms
  • Cisco: IOS, IOS-XE, IOS-XR, NX-OS, WLC (Wireless Controllers)
  • Juniper: JunOS
  • Arista: EOS
  • Future: Palo Alto, Fortinet, F5, and more
🏗️ Architecture
┌─────────────────────────────────────────────────────────────┐
│                    User Interface Layer                     │
│                  (CLI + Web Dashboard)                      │
└─────────────────────────────────────────────────────────────┘
                              │
┌─────────────────────────────────────────────────────────────┐
│                   FastAPI Gateway                           │
│              (Authentication & Routing)                     │
└─────────────────────────────────────────────────────────────┘
                              │
        ┌─────────────────────┼─────────────────────┐
        ▼                     ▼                     ▼
┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐
│   LangChain     │  │   LangGraph     │  │   MCP Server    │
│   (NL Processing)│  │  (Workflows)    │  │  (Context)      │
└─────────────────┘  └─────────────────┘  └─────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│              Network Execution Layer                        │
│                 (pyATS/Genie)                              │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                PostgreSQL Database                          │
│        (Devices, Topology, Commands, Audit)                │
└─────────────────────────────────────────────────────────────┘
🛠️ Technology Stack
  • Backend: FastAPI, Python 3.11+
  • Database: PostgreSQL 15+ with JSONB support
  • Caching: Redis
  • Network Automation: pyATS/Genie, Unicon
  • AI/ML: LangChain, LangGraph, OpenAI/Ollama
  • Context Protocol: Model Context Protocol (MCP)
  • Containerization: Docker, Docker Compose
  • Monitoring: Prometheus, Grafana
  • Testing: pytest, pytest-asyncio
📋 Prerequisites
  • Python 3.11 or higher
  • PostgreSQL 15 or higher
  • Redis 7 or higher
  • Docker and Docker Compose (for containerized deployment)
  • Git
🚀 Quick Start
1. Clone the Repository
git clone https://github.com/your-org/network-automation-system.git
cd network-automation-system
2. Environment Setup
# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt
3. Database Setup
# Start PostgreSQL and Redis with Docker
docker-compose -f deployment/docker-compose/docker-compose.dev.yml up -d postgres redis

# Run database migrations
alembic upgrade head
4. Configuration
# Copy environment template
cp configs/env.template .env

# Edit .env with your settings
# - Database connection
# - OpenAI API key (or Ollama endpoint)
# - Device credentials
5. Start the System
# Development mode
python -m uvicorn src.api.main:app --reload --host 0.0.0.0 --port 8000

# Or use Docker Compose
docker-compose -f deployment/docker-compose/docker-compose.dev.yml up
6. Access the System
📖 Documentation
Quick Links
Architecture Documentation
Operational Guides
🎯 Usage Examples
Natural Language Commands
# CLI Interface
network-automation interactive

> Add a new Cisco wireless controller at 192.168.1.10
> Show me the status of all access points on WLC-CORP-01
> Find all devices connected to VLAN 100
> Backup configurations of all core routers
API Usage
import httpx

# Execute command via API
async with httpx.AsyncClient() as client:
    response = await client.post("http://localhost:8000/api/v1/natural-language/process", 
        json={"input": "Show interface status on router-01"})
    print(response.json())
Workflow Creation
from src.langgraph_layer.workflows import WorkflowBuilder

# Create multi-device workflow
workflow = WorkflowBuilder() \
    .add_command_step("Backup Config", "show_running_config", "router-01") \
    .add_command_step("Update SNMP", "configure_snmp", "router-01", {"community": "new-string"}) \
    .add_validation_step("Verify Config", "show_running_config", "router-01") \
    .build("SNMP Update Workflow")
🧪 Testing
# Run all tests
pytest

# Run specific test categories
pytest tests/unit/          # Unit tests
pytest tests/integration/   # Integration tests
pytest tests/e2e/          # End-to-end tests

# Run with coverage
pytest --cov=src --cov-report=html
🚀 Deployment
Docker Compose (Recommended)
# Production deployment
docker-compose -f deployment/docker-compose/docker-compose.prod.yml up -d

# Development deployment
docker-compose -f deployment/docker-compose/docker-compose.dev.yml up -d
Kubernetes
# Deploy to Kubernetes
kubectl apply -f deployment/kubernetes/
🔧 Development
Project Structure
src/
├── api/                 # FastAPI application
├── core/               # Database models and core utilities
├── langchain_layer/    # Natural language processing
├── langgraph_layer/    # Workflow orchestration
├── mcp_server/         # Model Context Protocol implementation
├── network_layer/      # Network device connectivity
└── topology/           # Network topology management

docs/                   # Documentation
tests/                  # Test suites
docker/                 # Docker configurations
deployment/             # Deployment configurations
monitoring/             # Monitoring configurations
Contributing
  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request
📊 Monitoring

The system includes comprehensive monitoring with:

  • Prometheus: Metrics collection
  • Grafana: Visualization and alerting
  • Application metrics: Command execution, workflow performance
  • Infrastructure metrics: Database, API, network connectivity
🔒 Security
  • Authentication: JWT with multi-factor authentication
  • Authorization: Role-based access control (RBAC)
  • Credential Management: HashiCorp Vault integration
  • Audit Logging: Comprehensive audit trail
  • Network Security: Encrypted connections, credential rotation
📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🤝 Support
🙏 Acknowledgments