Skip to content

Add Veeam Backup & Replication plugin#81

Open
vinbab wants to merge 3 commits into
mainfrom
work/vb/plug-613
Open

Add Veeam Backup & Replication plugin#81
vinbab wants to merge 3 commits into
mainfrom
work/vb/plug-613

Conversation

@vinbab

@vinbab vinbab commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

🔌 Plugin overview

  • Plugin name: Veeam Backup & Replication
  • Purpose / problem solved: Brings a Veeam Backup & Replication (VBR) estate into SquaredUp via its REST API — indexes backup repositories and jobs as objects, and provides live status/health and capacity data streams plus out-of-the-box dashboards, so teams can monitor backup success/failure and repository capacity alongside the rest of their stack.
  • Primary audience: Platform / infrastructure / backup administrators and SREs.
  • Authentication method(s): OAuth2 password grant (username/password; no client id/secret). A required x-api-version header carries the selected REST API revision.

🖼️ Plugin screenshots

Screenshot 2026-07-02 at 14 37 22

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 validate passes (hybrid).
  • Deployed to a SquaredUp dev tenant and connected to a live VBR v13 (1.3-rev1) server through a SquaredUp Agent.
  • Verified end-to-end: OAuth2 password-grant auth and the config-validation step; Veeam Repository and Veeam Job objects import; all four data streams return data — Job Status (All), Repository Status (All), and the object-scoped Job Status / Repository Status (server-side idFilter, one call per selected object); Name-column drilldowns resolve to the graph objects; the Last Result health map, gigabytes capacity and percent shapes render; and the Overview + per-object "Status" dashboards populate.
  • Runtime-tested on v13 only. Earlier revisions (12.0–12.3) are supported via the matching x-api-version — the endpoints the plugin uses exist across all offered revisions — but have not been end-to-end tested.

⚠️ Known limitations

  • Base plugin is a CI build (WebAPI-ci-wpPLUG4677), not the released WebAPI. 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 released WebAPI once PLUG-4677 is merged/released.
  • oauth2ClientId / oauth2ClientSecret are 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.
  • On-premises VBR requires a SquaredUp Agent (REST API on port 9419).
  • Self-signed certificates: enable Ignore certificate errors (VBR default).
  • The selected x-api-version must 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

  • Plugin, datastream and UI naming follow SquaredUp guidelines
  • Logo added
  • One or more dashboards added
  • README added including configuration guidance
  • No secrets or credentials included
  • I agree to the Code of Conduct

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added an “Overview” dashboard plus dedicated job and repository “Status” dashboards.
    • Introduced live job and repository status data streams (scoped and unscoped), with job last result/status, run timestamps, repository online indicators, capacity/free-space, and property views.
    • Added job/repository selection scopes and related object type metadata for improved UI presentation.
    • Added plugin configuration UI and validation for server URL, credentials, REST API version, and certificate handling.
  • Documentation
    • Added a comprehensive README with indexed content, scoping behavior, dashboards, compatibility, limitations, and troubleshooting.

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>
@vinbab vinbab requested a review from a team July 2, 2026 12:28
@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review skipped

No new commits to review since the last review.

⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro

Run ID: c4b0ea07-8566-4c41-b283-58ae5c5f378a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The PR adds a new Veeam Backup & Replication v1 plugin with connection settings, object types, repository/job data streams, default dashboards, index mappings, and supporting documentation.

Changes

Veeam Backup & Replication v1 plugin

Layer / File(s) Summary
Plugin contract and config
plugins/VeeamBackupReplication/v1/metadata.json, plugins/VeeamBackupReplication/v1/ui.json, plugins/VeeamBackupReplication/v1/configValidation.json, plugins/VeeamBackupReplication/v1/custom_types.json, plugins/VeeamBackupReplication/v1/defaultContent/scopes.json
Defines plugin metadata, configuration inputs, validation, custom object types, and job/repository selection scopes.
Streams and indexing
plugins/VeeamBackupReplication/v1/dataStreams/*, plugins/VeeamBackupReplication/v1/indexDefinitions/default.json
Adds repository and job status streams, scoped variants, and the index mappings that populate them.
Default dashboards
plugins/VeeamBackupReplication/v1/defaultContent/manifest.json, plugins/VeeamBackupReplication/v1/defaultContent/Job/*, plugins/VeeamBackupReplication/v1/defaultContent/Repository/*, plugins/VeeamBackupReplication/v1/defaultContent/overviewDashboard.dash.json
Adds dashboard manifests and dashboard layouts for overview, job status, and repository status views.
Documentation
plugins/VeeamBackupReplication/v1/docs/README.md
Adds setup, compatibility, troubleshooting, and usage documentation for the plugin.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: adding the Veeam Backup & Replication plugin.
Description check ✅ Passed The description covers the plugin overview, screenshots, testing, limitations, and checklist, so it is mostly complete.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Comment @coderabbitai help to get the list of available commands.

@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@clarkd

clarkd commented Jul 2, 2026

Copy link
Copy Markdown
Member

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@JRoseDev

JRoseDev commented Jul 2, 2026

Copy link
Copy Markdown

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@clarkd

clarkd commented Jul 2, 2026

Copy link
Copy Markdown
Member

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@clarkd

clarkd commented Jul 2, 2026

Copy link
Copy Markdown
Member

@claude review

@clarkd clarkd added the new-plugin Used to PR newly added plugins label Jul 2, 2026
@vinbab vinbab requested a review from jame2O July 2, 2026 13:46

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 05aeeab and 964abbe.

⛔ Files ignored due to path filters (1)
  • plugins/VeeamBackupReplication/v1/icon.svg is excluded by !**/*.svg
📒 Files selected for processing (17)
  • plugins/VeeamBackupReplication/v1/configValidation.json
  • plugins/VeeamBackupReplication/v1/custom_types.json
  • plugins/VeeamBackupReplication/v1/dataStreams/jobStates.json
  • plugins/VeeamBackupReplication/v1/dataStreams/jobStatesScoped.json
  • plugins/VeeamBackupReplication/v1/dataStreams/repositoryStates.json
  • plugins/VeeamBackupReplication/v1/dataStreams/repositoryStatesScoped.json
  • plugins/VeeamBackupReplication/v1/defaultContent/Job/manifest.json
  • plugins/VeeamBackupReplication/v1/defaultContent/Job/status.dash.json
  • plugins/VeeamBackupReplication/v1/defaultContent/Repository/manifest.json
  • plugins/VeeamBackupReplication/v1/defaultContent/Repository/status.dash.json
  • plugins/VeeamBackupReplication/v1/defaultContent/manifest.json
  • plugins/VeeamBackupReplication/v1/defaultContent/overviewDashboard.dash.json
  • plugins/VeeamBackupReplication/v1/defaultContent/scopes.json
  • plugins/VeeamBackupReplication/v1/docs/README.md
  • plugins/VeeamBackupReplication/v1/indexDefinitions/default.json
  • plugins/VeeamBackupReplication/v1/metadata.json
  • plugins/VeeamBackupReplication/v1/ui.json

Comment thread plugins/VeeamBackupReplication/v1/metadata.json Outdated
Comment thread plugins/VeeamBackupReplication/v1/metadata.json

@jame2O jame2O left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All looking good so far! Just left a few nitpick comments but looks nearly ready to go

Comment thread plugins/VeeamBackupReplication/v1/docs/README.md Outdated
Comment thread plugins/VeeamBackupReplication/v1/docs/README.md Outdated
Comment thread plugins/VeeamBackupReplication/v1/indexDefinitions/default.json
- 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>
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown

🧩 Plugin PR Summary

📦 Modified Plugins

  • plugins/VeeamBackupReplication/v1

📋 Results

Step Status
Validation ✅ Passed
Deployment 🚀 Deployed

🔍 Validation Details

veeam-backup-replication
{
  "valid": true,
  "pluginName": "veeam-backup-replication",
  "pluginType": "hybrid",
  "summary": {
    "Data Streams": 4,
    "Import Definitions": 1,
    "UI Configuration": true,
    "Has Icon": true,
    "Has Default Content": true,
    "Config Validation": true,
    "Custom Types": true
  }
}

@vinbab vinbab requested a review from jame2O July 3, 2026 12:51
@vinbab

vinbab commented Jul 3, 2026

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 3, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@clarkd

clarkd commented Jul 6, 2026

Copy link
Copy Markdown
Member

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new-plugin Used to PR newly added plugins

Development

Successfully merging this pull request may close these issues.

4 participants