Plugin Manager for Proxmox

mzimmermann

New Member
Jun 24, 2024
1
0
1
Hello Proxmox Team,


I’d like to ask whether it would be possible to integrate a plugin system into Proxmox.


I’ve already developed a proof of concept to install, disable, and manage plugins in Proxmox. Currently, it works by patching the pve-manager source code: the JavaScript for a plugin is loaded via a patch to /usr/share/pve-manager/index.html.tpl. This approach prevents the frontend from failing to load due to faulty plugin code. A plugin is only activated if all patches can be applied successfully, ensuring that Proxmox’s core functionality is not affected.


For every patched file, a corresponding “.distrib” file is created so that we always have the original file available for rollbacks. Plugins must follow a specific folder structure.


I also think it would be useful if plugins weren’t limited to Perl. To make that possible, I built a small Perl-to-Python bridge. Using a pve_plugin module, it mirrors the routes and parameters of the existing Perl routes, allowing plugins to be implemented in Python as well.


Would you be open to discussing how such a plugin system could be integrated upstream or that it can be an optional Modul? I’m happy to share more details and prototypes.

.tree
├── metadata.json
├── patches
│ ├── pve-manager-ups-menu.orig
│ ├── pve-manager-ups-menu.repl
│ ├── pve-nodes-ups-import.orig
│ ├── pve-nodes-ups-import.repl
│ ├── pve-nodes-ups-index.orig
│ ├── pve-nodes-ups-index.repl
│ ├── pve-nodes-ups-register.orig
│ └── pve-nodes-ups-register.repl
├── PVE
│ └── API2
│ └── UPS.pm
├── python
│ ├── __init__.py
│ └── pveups.py
└── www
├── MonView.js
├── Status.js
├── StatusView.js
├── UpsInstallWizard.js
├── UserEdit.js
├── UserView.js
└── Utils.js





ezgif-86318141c96253.gif
 
Feature requests should be filed on https://bugzilla.proxmox.com

This being said that suggestion is not new, here is an older discussion:

I still think it's a bad idea ( see my posts in that thread for the reasons why) except for storage plugins which is already possible.
 
Last edited:
  • Like
Reactions: LnxBil