- Added lock file exclusions for pnpm in .gitignore. - Removed obsolete package-lock.json from the api and portal directories. - Enhanced Cloudflare adapter with additional interfaces for zones and tunnels. - Improved Proxmox adapter error handling and logging for API requests. - Updated Proxmox VM parameters with validation rules in the API schema. - Enhanced documentation for Proxmox VM specifications and examples.
329 lines
7.0 KiB
Markdown
329 lines
7.0 KiB
Markdown
# Manual Testing Guide
|
|
|
|
This guide provides step-by-step instructions for manually testing the Proxmox provider.
|
|
|
|
## Prerequisites
|
|
|
|
- Kubernetes cluster with Crossplane installed
|
|
- Proxmox provider deployed
|
|
- ProviderConfig configured with valid credentials
|
|
- Access to Proxmox Web UI or API
|
|
|
|
## Test Scenarios
|
|
|
|
### 1. Tenant Tags Verification
|
|
|
|
**Objective**: Verify tenant tags are correctly applied and filtered.
|
|
|
|
#### Steps
|
|
|
|
1. **Create VM with tenant ID**:
|
|
```yaml
|
|
apiVersion: proxmox.sankofa.nexus/v1alpha1
|
|
kind: ProxmoxVM
|
|
metadata:
|
|
name: test-vm-tenant
|
|
labels:
|
|
tenant-id: "test-tenant-123"
|
|
spec:
|
|
forProvider:
|
|
node: "test-node"
|
|
name: "test-vm-tenant"
|
|
cpu: 2
|
|
memory: "4Gi"
|
|
disk: "50Gi"
|
|
storage: "local-lvm"
|
|
network: "vmbr0"
|
|
image: "100"
|
|
site: "us-sfvalley"
|
|
providerConfigRef:
|
|
name: proxmox-provider-config
|
|
```
|
|
|
|
2. **Verify tag in Proxmox**:
|
|
- Log into Proxmox Web UI
|
|
- Find the created VM
|
|
- Check Tags field
|
|
- Should show: `tenant_test-tenant-123` (underscore, not colon)
|
|
|
|
3. **Verify tenant filtering**:
|
|
- Use `ListVMs()` with tenant filter
|
|
- Should only return VMs with matching tenant tag
|
|
|
|
4. **Cleanup**:
|
|
```bash
|
|
kubectl delete proxmoxvm test-vm-tenant
|
|
```
|
|
|
|
**Expected Results**:
|
|
- ✅ VM created with tag `tenant_test-tenant-123`
|
|
- ✅ Tag uses underscore separator
|
|
- ✅ Tenant filtering works correctly
|
|
|
|
---
|
|
|
|
### 2. API Adapter Authentication
|
|
|
|
**Objective**: Verify API authentication header format.
|
|
|
|
#### Steps
|
|
|
|
1. **Check TypeScript adapter code**:
|
|
- Open `api/src/adapters/proxmox/adapter.ts`
|
|
- Verify all 8 API calls use: `Authorization: PVEAPIToken ${token}`
|
|
- Should NOT use: `Authorization: PVEAPIToken=${token}`
|
|
|
|
2. **Test API calls**:
|
|
- Intercept network requests
|
|
- Verify header format in all requests
|
|
- Check all 8 endpoints:
|
|
- `getNodes()`
|
|
- `getVMs()`
|
|
- `getResource()`
|
|
- `createResource()`
|
|
- `updateResource()`
|
|
- `deleteResource()`
|
|
- `getMetrics()`
|
|
- `healthCheck()`
|
|
|
|
3. **Verify error messages**:
|
|
- Test with invalid token
|
|
- Verify clear error messages
|
|
|
|
**Expected Results**:
|
|
- ✅ All requests use correct header format (space, not equals)
|
|
- ✅ Authentication succeeds with valid token
|
|
- ✅ Clear error messages for auth failures
|
|
|
|
---
|
|
|
|
### 3. Proxmox Version Testing
|
|
|
|
**Objective**: Test compatibility across Proxmox versions.
|
|
|
|
#### Test on PVE 6.x
|
|
|
|
1. **Verify importdisk API detection**:
|
|
- Create VM with cloud image
|
|
- Check if importdisk is attempted
|
|
- Verify graceful fallback if not supported
|
|
|
|
2. **Check version detection**:
|
|
- Verify `SupportsImportDisk()` logic
|
|
- Test error handling
|
|
|
|
#### Test on PVE 7.x
|
|
|
|
1. **Verify importdisk API**:
|
|
- Should be supported
|
|
- Test cloud image import
|
|
|
|
2. **Test all features**:
|
|
- VM creation
|
|
- Template cloning
|
|
- Network validation
|
|
|
|
#### Test on PVE 8.x
|
|
|
|
1. **Verify compatibility**:
|
|
- Test all features
|
|
- Verify no breaking changes
|
|
|
|
**Expected Results**:
|
|
- ✅ Works correctly on all versions
|
|
- ✅ Graceful handling of API differences
|
|
- ✅ Appropriate error messages
|
|
|
|
---
|
|
|
|
### 4. Node Configuration Testing
|
|
|
|
**Objective**: Test multi-node deployments.
|
|
|
|
#### Steps
|
|
|
|
1. **Test multiple nodes**:
|
|
- Deploy VMs to different nodes
|
|
- Verify node selection works
|
|
- Test node parameterization in compositions
|
|
|
|
2. **Test node health checks**:
|
|
- Verify health check before VM creation
|
|
- Test with unhealthy node
|
|
- Verify appropriate error handling
|
|
|
|
3. **Test node parameterization**:
|
|
- Use composition with node parameter
|
|
- Verify node is set correctly
|
|
|
|
**Expected Results**:
|
|
- ✅ VMs deploy to correct nodes
|
|
- ✅ Health checks work correctly
|
|
- ✅ Parameterization works
|
|
|
|
---
|
|
|
|
### 5. Error Scenarios
|
|
|
|
**Objective**: Test error handling and recovery.
|
|
|
|
#### Test Cases
|
|
|
|
1. **Node Unavailable**:
|
|
```bash
|
|
# Stop Proxmox node
|
|
# Attempt to create VM
|
|
# Verify error handling
|
|
```
|
|
|
|
2. **Storage Full**:
|
|
```bash
|
|
# Fill storage to capacity
|
|
# Attempt to create VM
|
|
# Verify quota error
|
|
```
|
|
|
|
3. **Network Bridge Missing**:
|
|
```yaml
|
|
# Use non-existent bridge
|
|
network: "vmbr999"
|
|
# Verify validation error
|
|
```
|
|
|
|
4. **Invalid Credentials**:
|
|
```yaml
|
|
# Update ProviderConfig with wrong password
|
|
# Verify authentication error
|
|
```
|
|
|
|
5. **Quota Exceeded**:
|
|
```yaml
|
|
# Request resources exceeding quota
|
|
# Verify quota error
|
|
```
|
|
|
|
**Expected Results**:
|
|
- ✅ Appropriate error messages
|
|
- ✅ No retry on non-retryable errors
|
|
- ✅ Retry on transient errors
|
|
- ✅ Proper cleanup on failure
|
|
|
|
---
|
|
|
|
### 6. Network Bridge Validation
|
|
|
|
**Objective**: Verify network bridge validation works.
|
|
|
|
#### Steps
|
|
|
|
1. **List available bridges**:
|
|
```bash
|
|
# Check bridges on node
|
|
kubectl get proxmoxvm -o yaml | grep network
|
|
```
|
|
|
|
2. **Test with existing bridge**:
|
|
```yaml
|
|
network: "vmbr0" # Should exist
|
|
```
|
|
- Should succeed
|
|
|
|
3. **Test with non-existent bridge**:
|
|
```yaml
|
|
network: "vmbr999" # Should not exist
|
|
```
|
|
- Should fail with clear error
|
|
|
|
4. **Verify validation timing**:
|
|
- Check that validation happens before VM creation
|
|
- Verify error in status conditions
|
|
|
|
**Expected Results**:
|
|
- ✅ Validation happens before VM creation
|
|
- ✅ Clear error messages
|
|
- ✅ No partial VM creation
|
|
|
|
---
|
|
|
|
### 7. Validation Rules
|
|
|
|
**Objective**: Test all validation rules.
|
|
|
|
#### Test Cases
|
|
|
|
1. **VM Name Validation**:
|
|
- Test valid names
|
|
- Test invalid characters
|
|
- Test length limits
|
|
|
|
2. **Memory Validation**:
|
|
- Test minimum (128 MB)
|
|
- Test maximum (2 TB)
|
|
- Test various formats
|
|
|
|
3. **Disk Validation**:
|
|
- Test minimum (1 GB)
|
|
- Test maximum (100 TB)
|
|
- Test various formats
|
|
|
|
4. **CPU Validation**:
|
|
- Test minimum (1)
|
|
- Test maximum (1024)
|
|
|
|
5. **Image Validation**:
|
|
- Test template ID format
|
|
- Test volid format
|
|
- Test image name format
|
|
|
|
**Expected Results**:
|
|
- ✅ All validation rules enforced
|
|
- ✅ Clear error messages
|
|
- ✅ Appropriate validation timing
|
|
|
|
---
|
|
|
|
## Test Checklist
|
|
|
|
Use this checklist to verify all functionality:
|
|
|
|
- [ ] Tenant tags created correctly
|
|
- [ ] Tenant filtering works
|
|
- [ ] API authentication works
|
|
- [ ] All 8 API endpoints work
|
|
- [ ] Works on PVE 6.x
|
|
- [ ] Works on PVE 7.x
|
|
- [ ] Works on PVE 8.x
|
|
- [ ] Multi-node deployment works
|
|
- [ ] Node health checks work
|
|
- [ ] Network bridge validation works
|
|
- [ ] All validation rules enforced
|
|
- [ ] Error handling works correctly
|
|
- [ ] Retry logic works
|
|
- [ ] Error messages are clear
|
|
- [ ] Status updates are accurate
|
|
|
|
---
|
|
|
|
## Reporting Issues
|
|
|
|
When reporting test failures, include:
|
|
|
|
1. **Test scenario**: Which test failed
|
|
2. **Steps to reproduce**: Detailed steps
|
|
3. **Expected behavior**: What should happen
|
|
4. **Actual behavior**: What actually happened
|
|
5. **Error messages**: Full error output
|
|
6. **Environment**: Proxmox version, Kubernetes version, etc.
|
|
7. **Logs**: Relevant logs from controller and Proxmox
|
|
|
|
---
|
|
|
|
## Success Criteria
|
|
|
|
All tests should:
|
|
- ✅ Complete without errors
|
|
- ✅ Produce expected results
|
|
- ✅ Have clear error messages when appropriate
|
|
- ✅ Clean up resources properly
|
|
|