Extensions overview¶
Since v7.0
Extensions are the plug-in mechanism for the MetalSoft platform. It allows 3rd party developers to extend the base functionality of MetalSoft in various ways such as:
Add buttons in the infrastructure editor
Add custom drivers for networking and server deployments
Execute custom code at pre or post-deploy
Integrate with DCIM systems or implement validation scripts
Installing an extension¶
To install an extension use the CLI:
metalcloud-cli extension create my-workflow workflow "Custom deployment workflow" --definition-source extension.json
┌───┬───────┬─────────────┬────────┬──────────┬────────────────────────────┐
│ # │ LABEL │ NAME │ STATUS │ KIND │ DESCRIPTION │
├───┼───────┼─────────────┼────────┼──────────┼────────────────────────────┤
│ 2 │ │ my-workflow │ draft │ workflow │ Custom deployment workflow │
└───┴───────┴─────────────┴────────┴──────────┴────────────────────────────┘
The extension is created as draft
and is not active until activated. While it is in draft
state it can be updated.
The types of extensions (the third param) are:
workflow
application
Activating an extension¶
An extension must be active before it can be used. To activate an extension use the CLI:
metalcloud-cli extension publish my-workflow
Note that for workflow extensions the extension must also be made public before it can be used, see below.
Making an extension public¶
This controls the visibility of the extension:
For application extensions, extensions that are not public can be instantiated only by the owners of the extension.
For workflow extensions, all extensions must be made public before they can be used.
Archiving the extension¶
Note that it is not possible to update an extension that is active. To update an extension archive the old one and create a new one. This preserves information about extension instances
and other information that might be required for billing purposes.
metalcloud extension archive deprecated-workflow-v1
More information¶
For more information on building the extensions follow: