Skip to content

[Feature] Community Plugin Preview - Storage Assistant β€” PVE/NFS and PBS/iSCSI safety modelΒ #718

Description

@mdobprv-lab

Got an idea? Nice! πŸ’‘ We love hearing what features would make PegaProx better for you.

A friendly reminder: PegaProx is built by volunteers in our spare time. We can't promise timelines or guarantee every feature will be implemented β€” but every suggestion helps shape the roadmap!

Want to help move things faster?

  • πŸ’– Become a Sponsor β€” sponsored features get prioritized
  • ⭐ Star the project β€” helps with visibility
  • 🀝 Even better: submit a PR with your idea!

Describe the feature

I am sharing an early community preview of PegaProx Storage Assistant:

This is not a marketplace submission yet. I am publishing the architecture early to identify integration pitfalls before implementing remote storage operations.

The plugin deliberately separates two storage workflows:

  • PVE / NFS β€” cluster-wide technical content only: iso, vztmpl, snippets and import. VM disks and backups are explicitly excluded.
  • PBS / iSCSI β€” one dedicated LUN assigned to one PBS, intended to be formatted with XFS/ext4 and registered as a PBS datastore.

The design is NAS-vendor-neutral and supports definitions for multiple NAS devices and network locations. It is not intended to duplicate vendor-specific storage lifecycle plugins such as the NetApp ONTAP integration described in #443.

Version 0.1.1 is definition-only:

  • remote execution is hard-disabled;
  • the plugin does not discover, connect, mount, format or register storage;
  • NFS paths, iSCSI identities and ownership collisions are validated;
  • one-LUN/one-PBS ownership is enforced in the registry;
  • credentials and CHAP secrets are not stored;
  • definition changes use PegaProx RBAC checks and audit logging;
  • English and Polish catalogs are included;
  • Modern, Corporate Dark/Light and Cloud Dark/Light layouts were verified;
  • 29 automated tests pass in CI.

The plugin has been tested with PegaProx 1.0.2 using the official Docker deployment model.

Before implementing discovery and execution, I would appreciate guidance on the preferred PegaProx integration points:

  1. How should a plugin reuse PegaProx-managed PVE and PBS connections without copying credentials into plugin files?
  2. Is there a canonical background-task API for progress reporting, cancellation and post-operation status?
  3. Which RBAC permissions and audit interfaces should plugin-initiated host operations use?
  4. What is the preferred way to resolve and target one PVE node, an entire PVE cluster or one PBS instance?
  5. Is there a supported navigation/context model for a global plugin that also performs PBS-oriented operations?
  6. Are any relevant plugin APIs or conventions expected to change soon?

The planned execution model is explicit plan β†’ apply β†’ verify β†’ rollback, with typed confirmation before formatting or signature removal and stable device matching by verified IQN, LUN and WWID rather than /dev/sdX.

Any warning about architectural dead ends at this stage would be especially valuable and could prevent significant rework later. There is no expectation of immediate review or marketplace inclusion.

Use Case

PVE clusters often need shared technical storage for ISO images, container templates, snippets and imports without filling local filesystems on individual hosts. NFS is appropriate here because the same technical resource can be available across the cluster.

PBS has a different storage model. A dedicated iSCSI LUN should have one unambiguous owner, be presented only to the selected PBS instance, use a verified filesystem and then be registered as a PBS datastore for VM backups.

The plugin is intended to guide administrators through these distinct workflows while preventing accidental role mixing, duplicate LUN ownership, unsafe device selection and premature destructive operations.

The main architectural requirement is to reuse connection and authorization mechanisms already managed by PegaProx rather than introducing another credential store inside the plugin.

Alternatives considered

  • Manual configuration on NAS, PVE and PBS β€” works, but provides no shared validation, ownership registry, safety review or consistent audit trail.
  • Custom SSH scripts β€” flexible, but difficult to integrate safely with PegaProx RBAC, background tasks, cancellation and auditing.
  • Storing separate credentials in plugin configuration β€” rejected because it duplicates sensitive data and creates an unnecessary security boundary.
  • Using iSCSI directly as general PVE storage β€” rejected for this project because the PVE workflow is intentionally limited to cluster-wide technical NFS content.
  • Using one shared iSCSI LUN on multiple PBS/PVE systems β€” rejected because it creates ambiguous ownership and filesystem-corruption risk.
  • Vendor-specific storage plugins β€” useful for storage lifecycle management, but they do not replace this NAS-vendor-neutral PVE/PBS consumption and safety workflow.

How important is this for you?

Would significantly improve my workflow and prevent architectural rework.

The current definition-only preview already covers validation and persistence. Guidance from the PegaProx maintainers before implementing discovery, background jobs and remote execution would help ensure that the next milestones use supported APIs and conventions.

This is not blocking my current use of PegaProx, and I am not requesting a delivery timeline from the core team.

Checklist

  • I have searched existing issues and discussions to make sure this hasn't been requested before

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions