Add Veeam Backup & Replication plugin#81
Conversation
Low-code (Web API) plugin for Veeam Backup & Replication. Indexes backup repositories and jobs as objects, provides job/repository status and capacity data streams (all and object-scoped via idFilter), and ships an Overview plus per-object Status dashboards. Auth via OAuth2 password grant with a selectable x-api-version (Veeam 12.0-13). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI (base), Organization UI (inherited) Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThe PR adds a Veeam Backup & Replication v1 plugin with OAuth2 configuration, repository and job status streams, object indexing, scoped dashboards, overview dashboards, validation, and setup documentation. ChangesVeeam Backup & Replication v1 plugin
Sequence Diagram(s)sequenceDiagram
participant Configuration
participant VeeamAPI
participant Indexing
participant Dashboards
Configuration->>VeeamAPI: authenticate with OAuth2 credentials
VeeamAPI-->>Indexing: return repository and job states
Indexing->>Dashboards: provide indexed objects and status data
Dashboards->>VeeamAPI: request scoped live status
VeeamAPI-->>Dashboards: return selected job or repository status
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Comment |
✅ Action performedReview finished.
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
@coderabbitai full review |
✅ Action performedFull review finished. |
✅ Action performedFull review finished. |
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
@claude review |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@plugins/VeeamBackupReplication/v1/defaultContent/Repository/status.dash.json`:
- Around line 25-30: The Online Status tile’s isOnline metadata only maps "true"
to success, so offline repositories with "false" are not shown as unhealthy.
Update the metadata shape in status.dash.json for the isOnline field to
explicitly map "false" to an error or warning state, keeping the existing
success mapping for "true", so the tile surfaces offline repositories clearly.
In `@plugins/VeeamBackupReplication/v1/metadata.json`:
- Around line 27-51: The base plugin reference in the metadata is pointing to an
unreleased CI build, which breaks validation and installability. Update the base
plugin identifier in the metadata config from the CI-specific
WebAPI-ci-wpPLUG4677 reference to the released WebAPI plugin version, keeping
the rest of the OAuth and header configuration unchanged.
- Line 9: The description in metadata.json is missing terminal punctuation and
should be a single punctuated sentence without implementation language. Update
the `description` field in `metadata.json` for `VeeamBackupReplication` so it
ends with proper punctuation while keeping it as one concise sentence.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI (base), Organization UI (inherited)
Review profile: ASSERTIVE
Plan: Pro
Run ID: 6afbd30f-b671-4f35-97f5-ef225990c196
⛔ Files ignored due to path filters (1)
plugins/VeeamBackupReplication/v1/icon.svgis excluded by!**/*.svg
📒 Files selected for processing (17)
plugins/VeeamBackupReplication/v1/configValidation.jsonplugins/VeeamBackupReplication/v1/custom_types.jsonplugins/VeeamBackupReplication/v1/dataStreams/jobStates.jsonplugins/VeeamBackupReplication/v1/dataStreams/jobStatesScoped.jsonplugins/VeeamBackupReplication/v1/dataStreams/repositoryStates.jsonplugins/VeeamBackupReplication/v1/dataStreams/repositoryStatesScoped.jsonplugins/VeeamBackupReplication/v1/defaultContent/Job/manifest.jsonplugins/VeeamBackupReplication/v1/defaultContent/Job/status.dash.jsonplugins/VeeamBackupReplication/v1/defaultContent/Repository/manifest.jsonplugins/VeeamBackupReplication/v1/defaultContent/Repository/status.dash.jsonplugins/VeeamBackupReplication/v1/defaultContent/manifest.jsonplugins/VeeamBackupReplication/v1/defaultContent/overviewDashboard.dash.jsonplugins/VeeamBackupReplication/v1/defaultContent/scopes.jsonplugins/VeeamBackupReplication/v1/docs/README.mdplugins/VeeamBackupReplication/v1/indexDefinitions/default.jsonplugins/VeeamBackupReplication/v1/metadata.jsonplugins/VeeamBackupReplication/v1/ui.json
jame2O
left a comment
There was a problem hiding this comment.
All looking good so far! Just left a few nitpick comments but looks nearly ready to go
- metadata.json: add terminal punctuation to description (CodeRabbit) - Repository Status dashboard: map isOnline "false" to error so offline repositories surface as unhealthy (CodeRabbit) - docs/README.md: drop the trailing-slash note and the redundant indexing paragraph (review nits) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
AnEvilPenguin
left a comment
There was a problem hiding this comment.
Only thing that is jumping out at me is that you have the old style scoped/un-scoped data streams. e.g. Job states and Job states (All). I thought we were trying to get away from this style?
Otherwise I can't see anything specifically jumping out at me.
@AnEvilPenguin Thanks. Indeed. Intentional but not what I had wanted. |
|
I ran a Claude code review on this branch and it came up with these issues.
|
The % Free Space tiles selected "Name" but the blocks/scalar viz reference the lowercase "name" column, so the label didn't resolve. Align the SQL SELECT to "name" in both the Overview and Repository/Status dashboards. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
🧩 Plugin PR Summary📦 Modified Plugins
📋 Results
🔍 Validation Details✅
|
|
jame2O
left a comment
There was a problem hiding this comment.
Nothing new popping out to me. :)
🔌 Plugin overview
x-api-versionheader carries the selected REST API revision.🖼️ Plugin screenshots
Plugin configuration
Config form: Server URL, Username, Password, REST API version (dropdown), Ignore certificate errors.
Default dashboards
Overview (jobs by last result/status, failed & warning job lists, repositories table, % free space, repositories not online), plus per-object Job → Status and Repository → Status perspectives.
🧪 Testing
squaredup validatepasses (hybrid).1.3-rev1) server through a SquaredUp Agent.Job Status (All),Repository Status (All), and the object-scopedJob Status/Repository Status(server-sideidFilter, one call per selected object); Name-column drilldowns resolve to the graph objects; theLast Resulthealth map,gigabytescapacity andpercentshapes render; and the Overview + per-object "Status" dashboards populate.x-api-version— the endpoints the plugin uses exist across all offered revisions — but have not been end-to-end tested.WebAPI-ci-wpPLUG4677), not the releasedWebAPI. It carries the PLUG-4677 fix (OAuth2 token cert/serialization) that the on-prem / self-signed flow needs. Before this ships publicly the base must be switched to the releasedWebAPIonce PLUG-4677 is merged/released.oauth2ClientId/oauth2ClientSecretare the literal"notused"— Veeam's password grant takes no client credentials, but the base's OAuth2 config expects the fields to be present. These are placeholders, not secrets.x-api-versionmust not be older than the server (older revisions can't serialize newer enum values). The object-scoped streams make no request until at least one object is selected.📚 Checklist
🤖 Generated with Claude Code
Summary by CodeRabbit