Translate Cove Data Protection TODO to English
Changed TODO document language from Dutch to English to align with project documentation standards (all code and docs in English). No content changes, only translation. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
1de1b032e7
commit
d1023f9e52
@ -1,204 +1,204 @@
|
|||||||
# TODO: Cove Data Protection Integration
|
# TODO: Cove Data Protection Integration
|
||||||
|
|
||||||
**Datum:** 2026-02-10
|
**Date:** 2026-02-10
|
||||||
**Status:** Research fase
|
**Status:** Research phase
|
||||||
**Prioriteit:** Medium
|
**Priority:** Medium
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🎯 Doel
|
## 🎯 Goal
|
||||||
|
|
||||||
Cove Data Protection (formerly N-able Backup / SolarWinds Backup) integreren in Backupchecks voor monitoring van backup status.
|
Integrate Cove Data Protection (formerly N-able Backup / SolarWinds Backup) into Backupchecks for backup status monitoring.
|
||||||
|
|
||||||
**Uitdaging:** Cove werkt NIET met email notificaties zoals andere backup systemen (Veeam, Synology, NAKIVO). We moeten een alternatieve methode vinden om backup status informatie binnen te halen.
|
**Challenge:** Cove does NOT work with email notifications like other backup systems (Veeam, Synology, NAKIVO). We need to find an alternative method to import backup status information.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔍 Research Vragen
|
## 🔍 Research Questions
|
||||||
|
|
||||||
### 1. API Beschikbaarheid
|
### 1. API Availability
|
||||||
- [ ] Heeft Cove Data Protection een publieke API?
|
- [ ] Does Cove Data Protection have a public API?
|
||||||
- [ ] Welke authenticatie methode gebruikt de API? (API key, OAuth, basic auth?)
|
- [ ] What authentication method does the API use? (API key, OAuth, basic auth?)
|
||||||
- [ ] Welke endpoints zijn beschikbaar voor backup status?
|
- [ ] Which endpoints are available for backup status?
|
||||||
- [ ] Is er rate limiting op de API?
|
- [ ] Is there rate limiting on the API?
|
||||||
- [ ] Documentatie URL: ?
|
- [ ] Documentation URL: ?
|
||||||
|
|
||||||
### 2. Data Structuur
|
### 2. Data Structure
|
||||||
- [ ] Welke informatie kunnen we ophalen per backup job?
|
- [ ] What information can we retrieve per backup job?
|
||||||
- Job naam
|
- Job name
|
||||||
- Status (success/warning/failed)
|
- Status (success/warning/failed)
|
||||||
- Start/eind tijd
|
- Start/end time
|
||||||
- Backup type
|
- Backup type
|
||||||
- Client/device naam
|
- Client/device name
|
||||||
- Error messages
|
- Error messages
|
||||||
- Objects/files backed up
|
- Objects/files backed up
|
||||||
- [ ] Is er een webhook systeem beschikbaar?
|
- [ ] Is there a webhook system available?
|
||||||
- [ ] Hoe vaak moet de API gepolld worden?
|
- [ ] How often should the API be polled?
|
||||||
|
|
||||||
### 3. Multi-Tenancy
|
### 3. Multi-Tenancy
|
||||||
- [ ] Ondersteunt Cove multi-tenant setups? (MSP use case)
|
- [ ] Does Cove support multi-tenant setups? (MSP use case)
|
||||||
- [ ] Kunnen we meerdere customers/partners monitoren vanuit 1 account?
|
- [ ] Can we monitor multiple customers/partners from 1 account?
|
||||||
- [ ] Hoe worden permissions/access geregeld?
|
- [ ] How are permissions/access managed?
|
||||||
|
|
||||||
### 4. Integratie Strategie
|
### 4. Integration Strategy
|
||||||
- [ ] **Optie A: Scheduled Polling**
|
- [ ] **Option A: Scheduled Polling**
|
||||||
- Cronjob die periodiek API aanroept
|
- Cronjob that periodically calls API
|
||||||
- Parse resultaten naar JobRun records
|
- Parse results to JobRun records
|
||||||
- Pro: Eenvoudig, consistent met huidige flow
|
- Pro: Simple, consistent with current flow
|
||||||
- Con: Delay tussen backup en registratie in systeem
|
- Con: Delay between backup and registration in system
|
||||||
|
|
||||||
- [ ] **Optie B: Webhook/Push**
|
- [ ] **Option B: Webhook/Push**
|
||||||
- Cove stuurt notificaties naar ons endpoint
|
- Cove sends notifications to our endpoint
|
||||||
- Pro: Real-time updates
|
- Pro: Real-time updates
|
||||||
- Con: Requires external endpoint, security considerations
|
- Con: Requires external endpoint, security considerations
|
||||||
|
|
||||||
- [ ] **Optie C: Email Forwarding**
|
- [ ] **Option C: Email Forwarding**
|
||||||
- Als Cove toch email support heeft (hidden setting?)
|
- If Cove has email support after all (hidden setting?)
|
||||||
- Pro: Hergebruikt bestaande email import flow
|
- Pro: Reuses existing email import flow
|
||||||
- Con: Mogelijk niet beschikbaar
|
- Con: Possibly not available
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📋 Technische Overwegingen
|
## 📋 Technical Considerations
|
||||||
|
|
||||||
### Database Model
|
### Database Model
|
||||||
Huidige JobRun model verwacht:
|
Current JobRun model expects:
|
||||||
- `mail_message_id` (FK) - hoe gaan we dit aanpassen voor API-sourced runs?
|
- `mail_message_id` (FK) - how do we adapt this for API-sourced runs?
|
||||||
- Mogelijk nieuw veld: `source_type` ("email" vs "api")
|
- Possible new field: `source_type` ("email" vs "api")
|
||||||
- Mogelijk nieuw veld: `external_id` (Cove job ID)
|
- Possible new field: `external_id` (Cove job ID)
|
||||||
|
|
||||||
### Parser Systeem
|
### Parser System
|
||||||
Huidige parser systeem werkt met email content. Voor API:
|
Current parser system works with email content. For API:
|
||||||
- Nieuw "parser" concept voor API responses?
|
- New "parser" concept for API responses?
|
||||||
- Of direct JobRun creatie zonder parser layer?
|
- Or direct JobRun creation without parser layer?
|
||||||
|
|
||||||
### Architecture Opties
|
### Architecture Options
|
||||||
|
|
||||||
**Optie 1: Extend Email Import System**
|
**Option 1: Extend Email Import System**
|
||||||
```
|
```
|
||||||
API Poller → Pseudo-MailMessage → Existing Parser → JobRun
|
API Poller → Pseudo-MailMessage → Existing Parser → JobRun
|
||||||
```
|
```
|
||||||
- Pro: Hergebruik bestaande flow
|
- Pro: Reuse existing flow
|
||||||
- Con: Hacky, email velden hebben geen betekenis
|
- Con: Hacky, email fields have no meaning
|
||||||
|
|
||||||
**Optie 2: Parallel Import System**
|
**Option 2: Parallel Import System**
|
||||||
```
|
```
|
||||||
API Poller → API Parser → JobRun (direct)
|
API Poller → API Parser → JobRun (direct)
|
||||||
```
|
```
|
||||||
- Pro: Clean separation, geen email dependency
|
- Pro: Clean separation, no email dependency
|
||||||
- Con: Duplicatie van logic
|
- Con: Logic duplication
|
||||||
|
|
||||||
**Optie 3: Unified Import Layer**
|
**Option 3: Unified Import Layer**
|
||||||
```
|
```
|
||||||
→ Email Import →
|
→ Email Import →
|
||||||
Unified → → Common Processor → JobRun
|
Unified → → Common Processor → JobRun
|
||||||
→ API Import →
|
→ API Import →
|
||||||
```
|
```
|
||||||
- Pro: Future-proof, schaalbaar
|
- Pro: Future-proof, scalable
|
||||||
- Con: Grotere refactor
|
- Con: Larger refactor
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔧 Implementatie Stappen (Na Research)
|
## 🔧 Implementation Steps (After Research)
|
||||||
|
|
||||||
### Phase 1: API Research & POC
|
### Phase 1: API Research & POC
|
||||||
1. [ ] Onderzoek Cove API documentatie
|
1. [ ] Research Cove API documentation
|
||||||
2. [ ] Test API authenticatie
|
2. [ ] Test API authentication
|
||||||
3. [ ] Test data ophalen (1 backup job)
|
3. [ ] Test data retrieval (1 backup job)
|
||||||
4. [ ] Mapping van Cove data → Backupchecks model
|
4. [ ] Mapping of Cove data → Backupchecks model
|
||||||
5. [ ] Proof of concept script (standalone)
|
5. [ ] Proof of concept script (standalone)
|
||||||
|
|
||||||
### Phase 2: Database Aanpassingen
|
### Phase 2: Database Changes
|
||||||
1. [ ] Beslis: extend MailMessage model of nieuwe source type?
|
1. [ ] Decide: extend MailMessage model or new source type?
|
||||||
2. [ ] Migratie: `source_type` veld toevoegen aan JobRun
|
2. [ ] Migration: add `source_type` field to JobRun
|
||||||
3. [ ] Migratie: `external_id` veld toevoegen aan JobRun
|
3. [ ] Migration: add `external_id` field to JobRun
|
||||||
4. [ ] Update constraints/validations
|
4. [ ] Update constraints/validations
|
||||||
|
|
||||||
### Phase 3: Import Mechanisme
|
### Phase 3: Import Mechanism
|
||||||
1. [ ] Nieuw bestand: `containers/backupchecks/src/backend/app/cove_importer.py`
|
1. [ ] New file: `containers/backupchecks/src/backend/app/cove_importer.py`
|
||||||
2. [ ] API client voor Cove
|
2. [ ] API client for Cove
|
||||||
3. [ ] Data transformatie naar JobRun format
|
3. [ ] Data transformation to JobRun format
|
||||||
4. [ ] Error handling & retry logic
|
4. [ ] Error handling & retry logic
|
||||||
5. [ ] Logging & audit trail
|
5. [ ] Logging & audit trail
|
||||||
|
|
||||||
### Phase 4: Scheduling
|
### Phase 4: Scheduling
|
||||||
1. [ ] Cronjob/scheduled task voor polling (elke 15 min?)
|
1. [ ] Cronjob/scheduled task for polling (every 15 min?)
|
||||||
2. [ ] Of: webhook endpoint als Cove dat ondersteunt
|
2. [ ] Or: webhook endpoint if Cove supports it
|
||||||
3. [ ] Rate limiting & throttling
|
3. [ ] Rate limiting & throttling
|
||||||
4. [ ] Duplicate detection (niet dubbel importeren)
|
4. [ ] Duplicate detection (avoid double imports)
|
||||||
|
|
||||||
### Phase 5: UI Updates
|
### Phase 5: UI Updates
|
||||||
1. [ ] Job Details: indicatie dat job van API komt (niet email)
|
1. [ ] Job Details: indication that job is from API (not email)
|
||||||
2. [ ] No "Download EML" button voor API-sourced runs
|
2. [ ] No "Download EML" button for API-sourced runs
|
||||||
3. [ ] Mogelijk andere metadata weergave
|
3. [ ] Possibly different metadata display
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📚 Referenties
|
## 📚 References
|
||||||
|
|
||||||
### Cove Data Protection
|
### Cove Data Protection
|
||||||
- **Product naam:** Cove Data Protection (formerly N-able Backup, SolarWinds Backup)
|
- **Product name:** Cove Data Protection (formerly N-able Backup, SolarWinds Backup)
|
||||||
- **Website:** https://www.n-able.com/products/cove-data-protection
|
- **Website:** https://www.n-able.com/products/cove-data-protection
|
||||||
- **API Docs:** [TODO: link toevoegen na research]
|
- **API Docs:** [TODO: add link after research]
|
||||||
- **Support:** [TODO: contact info]
|
- **Support:** [TODO: contact info]
|
||||||
|
|
||||||
### Vergelijkbare Integraties
|
### Similar Integrations
|
||||||
Andere backup systemen die API gebruiken:
|
Other backup systems that use APIs:
|
||||||
- Veeam: Heeft zowel email als REST API
|
- Veeam: Has both email and REST API
|
||||||
- Acronis: REST API beschikbaar
|
- Acronis: REST API available
|
||||||
- MSP360: API voor management
|
- MSP360: API for management
|
||||||
|
|
||||||
### Resources
|
### Resources
|
||||||
- [ ] API documentation (nog te vinden)
|
- [ ] API documentation (yet to find)
|
||||||
- [ ] SDK/Client libraries beschikbaar?
|
- [ ] SDK/Client libraries available?
|
||||||
- [ ] Community/forum voor integratie vragen?
|
- [ ] Community/forum for integration questions?
|
||||||
- [ ] Example code/integrations?
|
- [ ] Example code/integrations?
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## ❓ Open Vragen
|
## ❓ Open Questions
|
||||||
|
|
||||||
1. **Performance:** Hoeveel Cove jobs moeten we monitoren? (impact op polling frequency)
|
1. **Performance:** How many Cove jobs do we need to monitor? (impact on polling frequency)
|
||||||
2. **Historical Data:** Kunnen we oude backup runs ophalen, of alleen nieuwe?
|
2. **Historical Data:** Can we retrieve old backup runs, or only new ones?
|
||||||
3. **Filtering:** Kunnen we filters toepassen (alleen failed jobs, specifieke clients)?
|
3. **Filtering:** Can we apply filters (only failed jobs, specific clients)?
|
||||||
4. **Authentication:** Waar bewaren we Cove API credentials? (SystemSettings?)
|
4. **Authentication:** Where do we store Cove API credentials? (SystemSettings?)
|
||||||
5. **Multi-Account:** Ondersteunen we meerdere Cove accounts? (MSP scenario)
|
5. **Multi-Account:** Do we support multiple Cove accounts? (MSP scenario)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🎯 Success Criteria
|
## 🎯 Success Criteria
|
||||||
|
|
||||||
### Minimum Viable Product (MVP)
|
### Minimum Viable Product (MVP)
|
||||||
- [ ] Backup runs van Cove worden automatisch geïmporteerd
|
- [ ] Backup runs from Cove are automatically imported
|
||||||
- [ ] Status (success/warning/failed) correct weergegeven
|
- [ ] Status (success/warning/failed) displayed correctly
|
||||||
- [ ] Job naam en timestamp beschikbaar
|
- [ ] Job name and timestamp available
|
||||||
- [ ] Zichtbaar in Daily Jobs & Run Checks
|
- [ ] Visible in Daily Jobs & Run Checks
|
||||||
- [ ] Errors en warnings worden getoond
|
- [ ] Errors and warnings are shown
|
||||||
|
|
||||||
### Nice to Have
|
### Nice to Have
|
||||||
- [ ] Real-time import (webhook ipv polling)
|
- [ ] Real-time import (webhook instead of polling)
|
||||||
- [ ] Backup object details (individuele files/folders)
|
- [ ] Backup object details (individual files/folders)
|
||||||
- [ ] Retry history
|
- [ ] Retry history
|
||||||
- [ ] Storage usage metrics
|
- [ ] Storage usage metrics
|
||||||
- [ ] Multi-tenant support
|
- [ ] Multi-tenant support
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🚀 Volgende Stappen
|
## 🚀 Next Steps
|
||||||
|
|
||||||
1. **Research eerst!** - Begin met API documentatie onderzoek
|
1. **Research first!** - Start with API documentation investigation
|
||||||
2. Maak POC script (standalone, buiten Backupchecks)
|
2. Create POC script (standalone, outside Backupchecks)
|
||||||
3. Documenteer bevindingen in dit bestand
|
3. Document findings in this file
|
||||||
4. Beslis welke architecture optie (1, 2, of 3)
|
4. Decide which architecture option (1, 2, or 3)
|
||||||
5. Dan pas implementatie starten
|
5. Only then start implementation
|
||||||
|
|
||||||
**Status:** Wachten op API research completion.
|
**Status:** Waiting on API research completion.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📝 Notes
|
## 📝 Notes
|
||||||
|
|
||||||
- Dit TODO document moet bijgewerkt worden na elke research stap
|
- This TODO document should be updated after each research step
|
||||||
- Voeg API voorbeelden toe zodra beschikbaar
|
- Add API examples as soon as available
|
||||||
- Documenteer edge cases en beperkingen
|
- Document edge cases and limitations
|
||||||
- Overweeg security implications (API keys opslag, rate limits, etc.)
|
- Consider security implications (API key storage, rate limits, etc.)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user