Files
Sankofa/docs/proxmox/WARNINGS_ANALYSIS.md
defiQUG 33d50fb91e
Some checks failed
API CI / API Lint (push) Successful in 47s
API CI / API Type Check (push) Failing after 47s
API CI / API Test (push) Successful in 1m0s
API CI / API Build (push) Failing after 50s
API CI / Build Docker Image (push) Has been skipped
Build Crossplane Provider / build (push) Failing after 5m51s
CD Pipeline / Deploy to Staging (push) Failing after 29s
CI Pipeline / Lint and Type Check (push) Failing after 36s
CI Pipeline / Build (push) Has been skipped
CI Pipeline / Test Backend (push) Failing after 1m33s
CI Pipeline / Test Frontend (push) Failing after 30s
CI Pipeline / Security Scan (push) Failing after 1m16s
Crossplane Provider CI / Go Test (push) Failing after 3m23s
Crossplane Provider CI / Go Lint (push) Failing after 7m27s
Crossplane Provider CI / Go Build (push) Failing after 3m27s
Deploy to Staging / Deploy to Staging (push) Failing after 30s
Portal CI / Portal Lint (push) Failing after 21s
Portal CI / Portal Type Check (push) Failing after 21s
Portal CI / Portal Test (push) Failing after 21s
Portal CI / Portal Build (push) Failing after 22s
Test Suite / frontend-tests (push) Failing after 30s
Test Suite / api-tests (push) Failing after 49s
Test Suite / blockchain-tests (push) Failing after 30s
Type Check / type-check (map[directory:. name:root]) (push) Failing after 23s
Type Check / type-check (map[directory:api name:api]) (push) Failing after 21s
Type Check / type-check (map[directory:portal name:portal]) (push) Failing after 19s
Validate Configuration Files / validate (push) Failing after 1m52s
CD Pipeline / Deploy to Production (push) Has been skipped
chore: consolidate local WIP (repo cleanup 20260707)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-07 09:41:34 -07:00

249 lines
6.6 KiB
Markdown

# Provider Warnings Analysis and Fix Instructions
**Date**: 2025-12-13
**Status**: ⚠️ **WARNINGS IDENTIFIED - FIX REQUIRES GO ENVIRONMENT**
---
## Summary
The provider logs show repeated errors about missing CRDs. These are **non-critical** and don't affect basic VM operations, but they create log noise and should be fixed.
---
## Issue Details
### Error Messages
**Repeating every 10 seconds**:
```
ERROR controller-runtime.source.EventHandler if kind is a CRD, it should be installed before calling Start
{"kind": "ProxmoxVMScaleSet.proxmox.sankofa.nexus", "error": "no matches for kind \"ProxmoxVMScaleSet\" in version \"proxmox.sankofa.nexus/v1alpha1\""}
ERROR controller-runtime.source.EventHandler if kind is a CRD, it should be installed before calling Start
{"kind": "ResourceDiscovery.proxmox.sankofa.nexus", "error": "no matches for kind \"ResourceDiscovery\" in version \"proxmox.sankofa.nexus/v1alpha1\""}
```
### Root Cause
1. **Provider Code**: The provider (`cmd/provider/main.go`) unconditionally registers controllers for:
- `ProxmoxVMScaleSet` - For VM scaling operations
- `ResourceDiscovery` - For resource discovery operations
2. **Missing CRDs**: The CRD YAML files for these resources don't exist:
- `proxmox.sankofa.nexus_proxmoxvmscalesets.yaml` - Missing
- `proxmox.sankofa.nexus_resourcediscoveries.yaml` - Missing
3. **Type Definitions Exist**: The Go type definitions exist in:
- `apis/v1alpha1/vmscaleset_types.go`
- `apis/v1alpha1/resourcediscovery_types.go`
4. **CRDs Not Generated**: The CRDs were never generated from the type definitions.
### Impact
| Aspect | Impact | Severity |
|--------|--------|----------|
| **VM Operations** | ✅ Working perfectly | None |
| **Log Noise** | ⚠️ Errors every 10 seconds | Low |
| **Resource Usage** | ⚠️ Minor (retry attempts) | Low |
| **Functionality** | ✅ All basic features work | None |
**Conclusion**: Non-critical but should be fixed for production.
---
## Fix Instructions
### Option 1: Generate and Install Missing CRDs (Recommended)
**Prerequisites**:
- Go 1.21+ installed
- Access to build environment
**Steps**:
1. **Generate CRDs**:
```bash
cd crossplane-provider-proxmox
make manifests
```
This will generate:
- `config/crd/bases/proxmox.sankofa.nexus_proxmoxvmscalesets.yaml`
- `config/crd/bases/proxmox.sankofa.nexus_resourcediscoveries.yaml`
2. **Install CRDs**:
```bash
kubectl apply -f config/crd/bases/
```
3. **Verify**:
```bash
kubectl get crd | grep proxmox
# Should show all 4 CRDs:
# - providerconfigs.proxmox.sankofa.nexus
# - proxmoxvms.proxmox.sankofa.nexus
# - proxmoxvmscalesets.proxmox.sankofa.nexus
# - resourcediscoveries.proxmox.sankofa.nexus
```
4. **Check Logs**:
```bash
kubectl logs -n crossplane-system -l app=crossplane-provider-proxmox --tail=50
# Should show no CRD-related errors
```
**Result**: All errors resolved, all features available.
---
### Option 2: Make Controller Registration Conditional (Code Change)
If you don't need scaling/discovery features, modify the provider code to only register controllers if CRDs exist.
**File**: `crossplane-provider-proxmox/cmd/provider/main.go`
**Change**:
```go
// Instead of unconditional registration:
// Register ProxmoxVMScaleSet controller
if err = (&vmscaleset.ProxmoxVMScaleSetReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "ProxmoxVMScaleSet")
os.Exit(1)
}
// Use conditional registration:
// Only register if CRD exists
if crdExists("proxmoxvmscalesets.proxmox.sankofa.nexus") {
if err = (&vmscaleset.ProxmoxVMScaleSetReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "ProxmoxVMScaleSet")
os.Exit(1)
}
} else {
setupLog.Info("ProxmoxVMScaleSet CRD not found, skipping controller registration")
}
```
**Note**: This requires:
- Implementing `crdExists()` helper function
- Rebuilding the provider image
- Redeploying the provider
---
### Option 3: Accept Log Noise (Temporary)
If you don't need these features and can't fix immediately:
- Filter logs to ignore these specific errors
- Accept the log noise (doesn't affect functionality)
- Fix later when Go environment is available
---
## Current Status
### Installed CRDs
```bash
kubectl get crd | grep proxmox
```
**Current**:
- ✅ `providerconfigs.proxmox.sankofa.nexus`
- ✅ `proxmoxvms.proxmox.sankofa.nexus`
- ❌ `proxmoxvmscalesets.proxmox.sankofa.nexus` - Missing
- ❌ `resourcediscoveries.proxmox.sankofa.nexus` - Missing
### Provider Functionality
- ✅ **Basic VM Operations**: Working perfectly
- ✅ **ProviderConfig**: Working
- ⚠️ **VM Scaling**: Not available (CRD missing)
- ⚠️ **Resource Discovery**: Not available (CRD missing)
---
## Recommendation
### For Development/Testing
**Priority**: Low
- Can be ignored for now
- Basic VM operations work fine
- Fix when convenient
### For Production
**Priority**: Medium
- Should be fixed to reduce log noise
- Enables additional features (scaling, discovery)
- Improves operational clarity
**Recommended Action**: Generate and install missing CRDs (Option 1)
---
## Verification After Fix
### Expected Results
1. **All CRDs Installed**:
```bash
kubectl get crd | grep proxmox
# 4 CRDs should be listed
```
2. **Clean Logs**:
```bash
kubectl logs -n crossplane-system -l app=crossplane-provider-proxmox --tail=100 | grep -i error
# Should show no CRD-related errors
```
3. **All Features Available**:
- Basic VM management ✅
- VM scaling ✅
- Resource discovery ✅
---
## Additional Notes
### Why This Happened
- CRD generation is part of the build process
- Type definitions exist but CRDs weren't generated
- Provider code assumes all CRDs are installed
- Controller-runtime requires CRDs before watching
### Prevention
- Include CRD generation in CI/CD pipeline
- Verify all CRDs are installed during deployment
- Make controller registration conditional (best practice)
---
## Conclusion
**Status**: ⚠️ **Warnings present but non-critical**
- Basic functionality: ✅ Working
- Log noise: ⚠️ Present (can be filtered)
- Additional features: ⚠️ Not available (until CRDs installed)
- Fix required: ✅ Yes (for production)
**Action**: Generate and install missing CRDs when Go environment is available.
---
**Last Updated**: 2025-12-13
**Status**: ⚠️ **FIX REQUIRED (NON-CRITICAL)**