Developer guide

Extend Cloud Management Platform (CMP) with your own code when configuration alone cannot meet a requirement

This section is for extending CMP: exploring the data model, writing plugins, and building blueprints for services CMP does not support by default.

Try configuration before code

Most requirements can be met without writing Python. The options below are ordered from least to most maintenance.

  1. Parameters, preconfigurations, groups, and environments. CMP’s own framework for constraining what users can order and where it lands.
  2. Content Library content. Blueprints, actions, rules, and recurring jobs written and maintained by CloudBolt.
  3. Infrastructure as code. Deploy an existing Terraform module or Azure Resource Manager template as a blueprint item.
  4. Remote scripts. Run a script on the deployed server in Bash, Python, or PowerShell.
  5. CloudBolt plugins. Your own Python, running at a point in the order or job lifecycle. Factor anything reused into shared modules.
  6. UI extensions. New screens, tabs, and workflows in the interface.

Before you build

Check first whether a built-in extension point already covers your case: an action, an orchestration hook, a blueprint, or a rule. Code written against those keeps working across upgrades, while code that goes beyond them may need rework.

For anything substantial, talk to CloudBolt Support first. They will review the plan, suggest alternatives, and point out where the product already does what you need.


Shared management

A service can be managed entirely through Cloud Management Platform (CMP), or by CMP and your operations teams together

Extensibility

The ways to extend Cloud Management Platform (CMP), from importing ready-made content to writing your own

Shell Plus

Shell Plus is an interactive Python shell on the Cloud Management Platform (CMP) appliance, with every model already imported

Models

Everything Cloud Management Platform (CMP) manages is a Django model, accessed through the same ORM CMP uses

Develop blueprints

A blueprint defines a service users can order and what Cloud Management Platform (CMP) does at each stage of that service’s life

Shared modules

Write Python once and import it into any Cloud Management Platform (CMP) plugin