π Python IPAM - Features & Roadmap¶
Version: 1.1.0 Last Updated: 2025-12-28
π Project Status Overview¶
| Category | Completed | In Progress | Planned | Total |
|---|---|---|---|---|
| Core Features | 9 | 0 | 3 | 12 |
| API Integration | 2 | 0 | 0 | 2 |
| UI/UX | 6 | 0 | 2 | 8 |
| Data Management | 4 | 0 | 5 | 9 |
| Testing | 6 | 0 | 1 | 7 |
| Security | 0 | 0 | 2 | 2 |
β Completed Features¶
Core IPAM Functionality¶
- [IPAM-001] β Network Management
- Priority: Critical | Category: Core
- Description: Create, view, and manage IP networks with CIDR notation
-
Acceptance Criteria:
- β Add networks with CIDR validation
- β Automatic broadcast address calculation
- β VLAN ID support
- β Location and description fields
- β Network utilization statistics
-
[IPAM-002] β Host Management
- Priority: Critical | Category: Core
- Description: Manage individual IP addresses and hosts
- Acceptance Criteria:
- β Add hosts with IP validation
- β Hostname and MAC address tracking
- β Status management (active/inactive/reserved)
- β Assignment tracking (is_assigned)
- β Discovery metadata (last_seen, discovery_source)
- β Auto-network detection for hosts
- β Host-to-network relationships
- β DHCP range management per network
Data Management¶
- [IPAM-003] β Extensible Export System
- Priority: High | Category: Data Management
- Description: Plugin-based export system supporting multiple formats
-
Acceptance Criteria:
- β CSV export for networks and hosts
- β JSON export format
- β Abstract base class for exporters
- β Factory pattern for format selection
- β Legacy route compatibility
-
[IPAM-004] β Extensible Import System
- Priority: High | Category: Data Management
- Description: Plugin-based import system with validation
-
Acceptance Criteria:
- β CSV import with validation
- β Error handling and reporting
- β Duplicate detection and skipping
- β Abstract base class for importers
- β Format auto-detection by extension
-
[IPAM-017] β Data Backup & Restore
- Priority: Medium | Category: Data Management
- Description: Backup and restore utilities with verification
- Acceptance Criteria:
- β Scheduled backups via CLI (cron-friendly)
- β One-click restore from backup
- β Backup verification and integrity checks
- β Database migration utilities via Flask-Migrate
UI/UX¶
- [IPAM-005] β Responsive Web Interface
- Priority: High | Category: UI/UX
- Description: Modern Bootstrap 5 interface with DataTables
-
Acceptance Criteria:
- β Bootstrap 5 responsive design
- β DataTables for sorting/filtering
- β Navigation with dropdown menus
- β Flash message system
- β Mobile-friendly interface
-
[IPAM-006] β Dashboard with Statistics
- Priority: Medium | Category: UI/UX
- Description: Overview dashboard with network utilization
- Acceptance Criteria:
- β Network and host count cards
- β Utilization progress bars
- β Recent networks/hosts tables
- β Visual status indicators
Development & Testing¶
- [IPAM-007] β Comprehensive Test Suite
- Priority: High | Category: Testing
- Description: Unit and integration tests with coverage
-
Acceptance Criteria:
- β Model tests for Network/Host
- β Route tests for all endpoints
- β Form validation tests
- β Export/Import functionality tests
- β Test fixtures and factories
-
[IPAM-008] β Code Quality Standards
- Priority: High | Category: Development
- Description: Google Style Guide compliance and tooling
- Acceptance Criteria:
- β Black formatting (80 char limit)
- β Google-style imports and structure
- β Pylint compliance
- β Git hooks and standards
π In Progress¶
No features currently in progress
β Recently Completed¶
Core Features Enhancement¶
- [IPAM-020] β Network Names and Domains
- Priority: Medium | Category: Core
- Status: Complete
- Description: Add name and domain fields to networks for better organization
- Acceptance Criteria:
- β
Add
namefield to Network model (optional, user-friendly identifier) - β
Add
domainfield to Network model (optional, DNS domain for network) - β Update network forms to include new fields
- β Update network displays and tables
- β Database migration for existing networks
- β
Add
-
Technical Implementation:
- Added
nameanddomainVARCHAR(100) columns to networks table - Updated NetworkForm with new optional fields
- Enhanced all network templates and API responses
- Backward compatible with existing networks
- Added
-
[IPAM-021] β Host CNAME Support
- Priority: Medium | Category: Core
- Status: Complete
- Description: Add CNAME alias support for hosts with export integration
- Acceptance Criteria:
- β
Add
cnamefield to Host model (optional, DNS alias) - β Update host forms and displays
- β
Extend DNSmasq exporter with
cname=CNAME,HOSTNAMEentries - β Update all templates to show CNAME field
- β CNAME statistics in DNSmasq export
- β
Add
-
Technical Features:
- Added
cnameVARCHAR(255) column to hosts table - Updated HostForm and all host templates
- Enhanced DNSmasq exporter with separate CNAME section
- CNAME aliases work with all DNSmasq modes (DNS/DHCP/Combined)
- Export format:
cname=ALIAS,HOSTNAME
- Added
-
[IPAM-022] β Form Field Validation Indicators
- Priority: Low | Category: UI/UX
- Status: Complete
- Description: Visual indicators for mandatory vs optional form fields
- Acceptance Criteria:
- β Add asterisk (*) to required field labels
- β Helpful form-text for all fields (required/optional)
- β Consistent styling across all forms
- β Clear visual distinction between mandatory and optional fields
- UI Improvements:
- Red asterisk (*) for required fields (Network Address, CIDR, IP Address)
- Form-text descriptions for all fields
- Consistent Bootstrap styling throughout forms
CRUD Operations¶
- [IPAM-019] β Edit and Delete Functionality for Networks and Hosts
- Priority: High | Category: Core
- Status: Complete
- Description: Full CRUD operations with edit forms and safe deletion
- Acceptance Criteria:
- β Edit network form with validation and error handling
- β Edit host form with network auto-detection and manual assignment
- β Delete network with host-dependency protection
- β Delete host with confirmation dialog
- β Action buttons integrated into DataTables
- β JavaScript confirmation dialogs for deletions
- β Flash messages for success/error feedback
- β Form pre-population with existing data
- Routes Added:
GET/POST /edit_network/<id>- Edit network formGET/POST /edit_host/<id>- Edit host formPOST /delete_network/<id>- Delete network (with host check)POST /delete_host/<id>- Delete host
- Technical Features:
- Network deletion blocked if hosts are assigned
- Host IP validation and network auto-detection
- CSRF protection for all forms
- Bootstrap form styling with validation feedback
- JavaScript confirmation with host count display
Export/Import System¶
- [IPAM-018] β DNSmasq Host Export with Multiple Modes
- Priority: Medium | Category: Export
- Status: Complete
- Description: Export hosts in DNSmasq configuration format with configurable modes
- Acceptance Criteria:
- β
DNS Mode: Only
host-record=hostname,IPentries for DNS server use - β
DHCP Mode: Only
dhcp-host=MAC,IP,hostnameentries for DHCP server use - β Combined Mode: Both DNS and DHCP entries for full DNSmasq setup
- β Separate active and reserved hosts in all modes
- β Include mode-specific statistics and comments
- β Skip inactive hosts and hosts without hostnames
- β Skip hosts without MAC addresses in DHCP-only mode
- β
DNS Mode: Only
- Export Routes:
/export/hosts/dnsmasq- Combined mode (default)/export/hosts/dnsmasq-dns- DNS-only mode/export/hosts/dnsmasq-dhcp- DHCP-only mode
- Technical Notes:
- DNS Mode: All hosts get
host-record=hostname,IP(ignores MAC) - DHCP Mode: Only hosts with MAC get
dhcp-host=MAC,IP,hostname - Combined Mode: MAC hosts get
dhcp-host, non-MAC hosts gethost-record - File extension:
.conf - MIME type:
text/plain - Configurable via DNSmasqExporter constructor
- DNS Mode: All hosts get
Testing¶
- [IPAM-009] β Export/Import Test Coverage
- Priority: High | Category: Testing
- Status: Complete
- Description: Complete test coverage for new export/import system
- Acceptance Criteria:
- β CSV exporter/importer tests
- β JSON exporter/importer tests
- β Route integration tests
- β Error handling edge cases
- β Performance tests for large datasets
- Completed: Added comprehensive edge case tests, performance tests, and JSON import functionality
API & Integration¶
- [IPAM-023] β Comprehensive REST API with OpenAPI/Swagger
- Priority: High | Category: API
- Status: Complete
- Description: Complete RESTful API for all IPAM operations with filtering, pagination, and interactive Swagger UI documentation
- Acceptance Criteria:
- Network Operations:
- β
GET /api/v1/networks- List all networks (with filtering support) - β
GET /api/v1/networks/{id}- Get specific network details - β
POST /api/v1/networks- Create new network - β
PUT /api/v1/networks/{id}- Update existing network - β
DELETE /api/v1/networks/{id}- Delete network (with host check) - β
GET /api/v1/networks/{id}/hosts- List hosts in specific network - Host Operations:
- β
GET /api/v1/hosts- List all hosts (with filtering support) - β
GET /api/v1/hosts/{id}- Get specific host details - β
POST /api/v1/hosts- Create new host - β
PUT /api/v1/hosts/{id}- Update existing host - β
DELETE /api/v1/hosts/{id}- Delete host - IP Management:
- β
GET /api/v1/ip/networks/{id}/next-ip- Get next available IP in network - β
GET /api/v1/ip/networks/{id}/available-ips- List all available IPs - β
GET /api/v1/ip/{ip_address}- Query IP address status/details - Filtering & Search:
- β
Network filters:
name,domain,vlan_id,location - β
Host filters:
hostname,cname,status,mac_address,network_id - β
Pagination support:
page,per_page - Response Format:
- β Consistent JSON responses with metadata
- β Error handling with proper HTTP status codes
- β
Interactive Swagger UI at
/api/v1/docs
- Technical Implementation:
- Flask-RESTX for auto-documentation and Swagger UI
- Application Factory pattern for modular architecture
- SQLAlchemy models in dedicated ipam/models.py
- Comprehensive error handling with proper status codes
- Blueprint-based routing (ipam/api/ and ipam/web/)
- Implementation Files:
ipam/__init__.py- Application factory with db initializationipam/extensions.py- Flask-SQLAlchemy extensionipam/models.py- Network and Host modelsipam/config.py- Configuration with absolute database pathsipam/api/__init__.py- API blueprint and Swagger configurationipam/api/models.py- Request/response serialization modelsipam/api/networks.py- Network CRUD endpointsipam/api/hosts.py- Host CRUD endpointsipam/api/ip_management.py- IP allocation and query endpointsipam/web/- Web interface blueprintAPI.md- Complete API documentationtests/test_database.py- Database initialization tests
- Completed: API fully operational at http://127.0.0.1:5000/api/v1 with Swagger UI at /api/v1/docs
-
Notes: API authentication and rate limiting are now supported.
-
[IPAM-014] β REST API Expansion (Auth + Rate Limiting)
- Priority: Medium | Category: API
- Status: Complete
- Description: Token authentication and rate limiting for all API endpoints
- Acceptance Criteria:
- β
Token-based authentication via
Authorization: BearerorX-API-Key - β Swagger UI remains publicly accessible
- β Configurable rate limit defaults and limiter backend
- β
Environment-driven configuration (
API_TOKENS,API_RATE_LIMIT) - β
Optional rate limiting toggle (
RATELIMIT_ENABLED)
- β
Token-based authentication via
π Planned Features¶
Network Tools¶
- [IPAM-010] π Subnet Calculator
- Priority: Medium | Category: Network Tools
- Estimated Effort: Medium (2-3 days)
- Description: Built-in subnet calculator and IP range tools
- Acceptance Criteria:
- Calculate available subnets from larger networks
- Visual subnet splitting recommendations
- IP range conflict detection
- Subnet mask conversion tools
-
Technical Notes:
- Use ipaddress library for calculations
- Add JavaScript for real-time calculations
-
[IPAM-011] π Network Scanner Integration
- Priority: Medium | Category: Discovery
- Estimated Effort: High (4-5 days)
- Description: Scan network ranges for active hosts
- Acceptance Criteria:
- Ping sweep functionality
- Port scanning for common services
- Auto-populate discovered hosts
- Scheduled scan capabilities
- Dependencies: [IPAM-010] for subnet calculations
- Technical Notes: Consider using python-nmap library
Data Management¶
- [IPAM-024] π IP Lease History
- Priority: Medium | Category: Data Management
- Estimated Effort: Medium (2-3 days)
- Description: Track assignment and metadata changes for hosts and networks
-
Acceptance Criteria:
- Record create/update/delete events with timestamp and actor
- Persist history entries in a dedicated table
- UI for viewing history on host and network details
- API endpoints for history retrieval
- Export history entries in CSV/JSON
-
[IPAM-012] π Advanced Import Formats
- Priority: Low | Category: Data Management
- Estimated Effort: Medium (2-3 days)
- Description: Support for XML, Excel, and network tool exports
- Acceptance Criteria:
- XML import/export
- Excel (.xlsx) support
- Nmap XML import
- Cisco/HP switch MAC table import
-
Dependencies: [IPAM-004] plugin system
-
[IPAM-013] π Advanced Export with Filtering
- Priority: High | Category: Data Management
- Estimated Effort: Medium (2-3 days)
- Description: Export all data or filtered subsets with advanced options
- Acceptance Criteria:
- Complete Database Export: All networks, hosts, and relationships
- Filtered Network Export: By VLAN, location, IP range, utilization
- Filtered Host Export: By status, network, hostname pattern, date range
- Multiple Format Support: CSV, JSON, Excel for all export types
- Custom Field Selection: Choose which columns to include
- Export Templates: Save and reuse filter configurations
- UI Features:
- Advanced filter interface with multiple criteria
- Export preview with row count estimation
- Progress indicator for large exports
- Download history and re-export capability
- Technical Implementation:
# Export with advanced filtering /export/networks?vlan_id=100&location=datacenter&format=csv /export/hosts?status=active&network_id=5&format=json /export/complete?include=networks,hosts,relationships&format=excel # Filter examples networks: VLAN ID, location, IP range, utilization %, description hosts: status, network, hostname regex, IP range, last_seen date - UI Mockup:
[ Advanced Export ] Export Type: [β] Networks [ ] Hosts [β] Complete Database Filters: ββ Networks ββββββββββββββββββββββββββββββββββββββββββ β VLAN ID: [100,200-300] Location: [datacenter*] β β IP Range: [10.0.0.0/8] Utilization: [>80%] β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ Hosts βββββββββββββββββββββββββββββββββββββββββββββ β Status: [βactive βinactive βreserved] β β Hostname: [server*] Last Seen: [last 30 days] β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ Format: [CSV βΌ] Include: [βIP βHostname βMAC βStatus] Preview: ~1,247 networks, ~5,632 hosts [Export] [Save as Template] [Load Template] -
Dependencies: [IPAM-004] plugin system for format support
-
[IPAM-027] π Custom Fields
- Priority: Medium | Category: Data Management
- Estimated Effort: Medium (2-3 days)
- Description: User-defined fields for hosts and networks
-
Acceptance Criteria:
- Admin UI to define custom fields (string/int/bool/date)
- API support for reading and writing custom fields
- Export/import includes custom field values
- Validation for required fields and type constraints
-
[IPAM-017] π Data Backup & Restore
- Priority: Medium | Category: Data Management
- Estimated Effort: Small (1-2 days)
- Description: Automated backup and restore functionality
-
Acceptance Criteria:
- Scheduled database backups
- One-click restore from backup
- Complete database migration utilities
- Backup verification and integrity checks
-
[IPAM-016] π Local User Management UI
- Priority: Medium | Category: UI/Security
- Estimated Effort: Small (1-2 days)
- Description: Admin interface for local user management
- Acceptance Criteria:
- User list with search and filtering
- Add/edit/disable user accounts
- Role assignment interface
- Password reset functionality
- User activity logging
- Dependencies: [IPAM-015] hybrid authentication system
- Technical Notes:
- Reuse existing Bootstrap/DataTables UI patterns
- Add password strength validation
- Implement user audit trail
Core Validation¶
- [IPAM-026] π IP Conflict Detection
- Priority: Medium | Category: Core
- Estimated Effort: Medium (2-3 days)
- Description: Detect duplicate IPs and overlapping ranges
- Acceptance Criteria:
- Detect duplicate IPs within a network
- Detect overlapping networks and DHCP range overlaps
- UI warnings on create/update
- API returns structured conflict errors
- Background validation for existing data
Security & Authentication¶
- [IPAM-025] π Role-Based Access Control
- Priority: High | Category: Security
- Estimated Effort: Medium (3-4 days)
- Description: Fine-grained permissions across UI and API
-
Acceptance Criteria:
- Roles: ReadOnly, Editor, Admin, APIOnly
- Enforce permissions on UI routes and API endpoints
- Admin UI for role assignment
- Configurable default role for new users
- Audit log entries for role changes
-
[IPAM-015] π Hybrid Authentication System
- Priority: High | Category: Security
- Estimated Effort: Medium (3-4 days)
- Description: Support both local user management and OIDC via OAuth2 Proxy
- Acceptance Criteria:
- Local Authentication: Built-in user registration, login, password reset
- OAuth2 Proxy Support: OIDC integration via reverse proxy
- Role-based Access Control: Admin, User, ReadOnly roles
- Configurable Auth Mode: Environment variable to switch between modes
- User Management UI: Admin interface for local users
- Session Management: Secure session handling for both modes
- Technical Notes:
- Use Flask-Login for local authentication
- Header extraction for proxy-based auth
- Unified User model supporting both auth types
- Role inheritance from OIDC groups or local assignment
-
Authentication Modes:
Mode 1: Local Authentication (Default)
Mode 2: OAuth2 Proxy
- Implementation Structure:# docker-compose.auth.yml services: oauth2-proxy: image: quay.io/oauth2-proxy/oauth2-proxy:latest ports: ["4180:4180"] environment: - OAUTH2_PROXY_UPSTREAM=http://ipam:5000 - OAUTH2_PROXY_OIDC_ISSUER_URL=${OIDC_ISSUER} - OAUTH2_PROXY_CLIENT_ID=${OIDC_CLIENT_ID} - OAUTH2_PROXY_PASS_USER_HEADERS=true ipam: environment: - AUTH_MODE=proxy - AUTH_USER_HEADER=X-Forwarded-User- Rationale: Maximum flexibility - simple setup for development/small deployments, enterprise-ready OIDC for larger organizations# auth/models.py class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) password_hash = db.Column(db.String(255)) # Only for local auth role = db.Column(db.String(20), default='user') # admin/user/readonly auth_type = db.Column(db.String(10), default='local') # local/proxy is_active = db.Column(db.Boolean, default=True) # auth/manager.py class AuthManager: def authenticate_user(self, request): if app.config['AUTH_MODE'] == 'proxy': return self._authenticate_proxy(request) else: return self._authenticate_local(request)
π« Blocked/Deferred¶
Out of Scope¶
- Multi-tenant Support: Not planned for current roadmap
- Rationale: Single-tenant IPAM covers majority of use cases
- Complexity: Would require significant architecture changes
- Alternative: Deploy multiple IPAM instances for isolation
π Version History¶
v1.0.0 (Current)¶
- β Core IPAM functionality
- β Export/Import system with plugin architecture
- β Responsive web interface
- β Comprehensive test suite
v1.1.0 (Planned - Q4 2025)¶
- π Advanced export with filtering and templates
- π Network tools and calculator
- π Enhanced import formats (Excel, XML)
- π REST API expansion
v1.2.0 (Planned - Q1 2026)¶
- π Hybrid authentication system (local + OIDC)
- π User management interface
- π Role-based access control
- π IP lease history
v1.3.0 (Planned - Q2 2026)¶
- π IP conflict detection
- π Custom fields for hosts and networks
v2.0.0 (Planned - Q2 2026)¶
- π Network discovery tools
- π Advanced reporting and analytics
- π Performance optimizations for large datasets
π― Current Sprint Goals¶
Sprint: Export/Import System Enhancement Duration: 2025-10-01 to 2025-10-05
Goals¶
- β Complete plugin-based export/import system
- β Achieve 95%+ test coverage for export/import features
- β Add JSON import capability
- β Performance optimization for large datasets
Success Metrics¶
- β All export/import tests passing
- β No regression in existing functionality
- β Plugin system documented for future extensions
- β JSON import/export functionality complete
- β Comprehensive edge case and performance test coverage
π‘ Feature Request Template¶
- id: "IPAM-XXX"
title: "Feature Name"
status: "pending" # pending, in_progress, completed, blocked
priority: "medium" # low, medium, high, critical
category: "category_name" # core, ui, api, security, testing, etc.
estimated_effort: "medium" # small (1-2d), medium (2-4d), high (4-7d)
description: "Brief description of the feature"
rationale: "Why this feature is needed"
acceptance_criteria:
- "Specific requirement 1"
- "Specific requirement 2"
technical_notes:
- "Implementation considerations"
dependencies: ["IPAM-XXX"] # Other features this depends on
assignee: "optional"
π Need a new feature? Create an issue using the template above or contact the development team.