Added validation to each phase
parent
c0af0d5b41
commit
df8aac896b
25
DESIGN.md
25
DESIGN.md
|
|
@ -36,6 +36,7 @@ OpenTofu Client → HTTP Backend Protocol → QEMU Management Server
|
|||
- **Role**: Built-in OpenTofu HTTP backend (no custom code required)
|
||||
- **Responsibilities**: State serialization, HTTP communication, locking protocol
|
||||
- **Configuration**: Points to custom QEMU management server endpoints
|
||||
- **Integration**: Works with existing OpenTofu workflows and tooling with no additional code required
|
||||
|
||||
#### 2. QEMU Management Server
|
||||
- **Role**: Core application implementing HTTP backend protocol
|
||||
|
|
@ -44,10 +45,11 @@ OpenTofu Client → HTTP Backend Protocol → QEMU Management Server
|
|||
- QEMU process lifecycle management
|
||||
- Resource allocation and conflict resolution
|
||||
- State persistence and recovery
|
||||
- Exposing a web interface for monitoring, management and debugging
|
||||
|
||||
#### 3. State Storage Layer
|
||||
- **Role**: Persistent storage for OpenTofu state and VM metadata
|
||||
- **Options**: SQLite (simple), PostgreSQL (production), file-based (development)
|
||||
- **Options**: SQLite
|
||||
- **Responsibilities**: State persistence, backup, recovery
|
||||
|
||||
#### 4. QEMU Process Manager
|
||||
|
|
@ -69,6 +71,9 @@ OpenTofu Client → HTTP Backend Protocol → QEMU Management Server
|
|||
- Add proper error handling and logging
|
||||
- Create basic configuration system
|
||||
|
||||
**Validation:**
|
||||
- We should be able to run OpenTofu against the resulting service, and get valid responses indicating success (even if nothing is created or run)
|
||||
|
||||
### Phase 2: QEMU Integration
|
||||
**Deliverables:**
|
||||
- QEMU process lifecycle management
|
||||
|
|
@ -82,6 +87,9 @@ OpenTofu Client → HTTP Backend Protocol → QEMU Management Server
|
|||
- Add QEMU Machine Protocol (QMP) integration
|
||||
- Create resource conflict detection
|
||||
|
||||
**Validation:**
|
||||
- We should be able to run OpenTofu against the resulting service, and get valid responses indicating success (even if nothing is created or run yet)
|
||||
|
||||
### Phase 3: State Processing and VM Management
|
||||
**Deliverables:**
|
||||
- State diff processing to determine required changes
|
||||
|
|
@ -95,6 +103,12 @@ OpenTofu Client → HTTP Backend Protocol → QEMU Management Server
|
|||
- Add network and storage allocation
|
||||
- Build recovery and cleanup mechanisms
|
||||
|
||||
**Validation:**
|
||||
- Boot a VM from OpenTofu configuration until network connectivity is established (ping response)
|
||||
- Verify VM configuration changes are applied correctly through state diff processing
|
||||
- Test graceful VM shutdown and resource cleanup
|
||||
- Validate network and storage allocation/deallocation
|
||||
|
||||
### Phase 4: Production Readiness
|
||||
**Deliverables:**
|
||||
- Comprehensive error handling and recovery
|
||||
|
|
@ -108,6 +122,15 @@ OpenTofu Client → HTTP Backend Protocol → QEMU Management Server
|
|||
- Performance testing and optimization
|
||||
- Security hardening and authentication
|
||||
|
||||
**Validation:**
|
||||
- **Performance**: Deploy 10+ concurrent VMs and validate system stability under load
|
||||
- **Monitoring**: Verify metrics endpoints expose VM count, memory usage, and error rates
|
||||
- **Recovery**: Kill QEMU processes and validate automatic cleanup and state consistency
|
||||
- **Backup/Restore**: Create state backup, simulate data loss, and restore from backup
|
||||
- **Security**: Test authentication mechanisms and validate unauthorized access is blocked
|
||||
- **Error Handling**: Inject failures (disk full, network issues) and verify graceful degradation
|
||||
- **Resource Limits**: Exceed configured limits (max VMs, memory) and validate enforcement
|
||||
|
||||
## Technical Specifications
|
||||
|
||||
### HTTP Backend Protocol Implementation
|
||||
|
|
|
|||
Loading…
Reference in New Issue