π Python IPAM - Features & Roadmap¶
Version: 1.1.0 Last Updated: 2025-10-03
π Project Status Overview¶
Category | Completed | In Progress | Planned | Total |
---|---|---|---|---|
Core Features | 9 | 0 | 3 | 12 |
API Integration | 1 | 0 | 0 | 1 |
UI/UX | 6 | 0 | 2 | 8 |
Data Management | 4 | 0 | 2 | 6 |
Testing | 6 | 0 | 1 | 7 |
β 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)
- β Auto-network detection for hosts
- β Host-to-network relationships
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
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
name
field to Network model (optional, user-friendly identifier) - β
Add
domain
field 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
name
anddomain
VARCHAR(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
cname
field to Host model (optional, DNS alias) - β Update host forms and displays
- β
Extend DNSmasq exporter with
cname=CNAME,HOSTNAME
entries - β Update all templates to show CNAME field
- β CNAME statistics in DNSmasq export
- β
Add
-
Technical Features:
- Added
cname
VARCHAR(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,IP
entries for DNS server use - β
DHCP Mode: Only
dhcp-host=MAC,IP,hostname
entries 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: Authentication and rate limiting planned for future release (see roadmap)
π 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-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-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
API & Integration¶
- [IPAM-014] π REST API Expansion
- Priority: Medium | Category: API
- Estimated Effort: Medium (3-4 days)
- Description: Complete RESTful API with authentication
- Acceptance Criteria:
- CRUD operations for all resources
- API authentication (token-based)
- OpenAPI/Swagger documentation
- Rate limiting and pagination
- Dependencies: [IPAM-015] for authentication system
-
Technical Notes: Consider Flask-RESTX for auto-documentation
-
[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
Security & Authentication¶
- [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
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.