This plugin provides a full integration between UpCloud and Morpheus. It enables cloud inventory sync, server provisioning, VM power and resize actions, and backup/restore from within the Morpheus platform.
- Features
- Requirements
- Repository structure
- Building the plugin
- License
- Installing
- Detailed Usage Step
- API Endpoints
The following resources are discovered and kept in sync from UpCloud:
- Zones — available UpCloud zones/regions
- Plans — UpCloud server plans and pricing data
- Public Templates — UpCloud public OS templates available for provisioning
- User Images — private/user-created templates available for provisioning
- Virtual Machines — UpCloud servers, including power state and network details
Any additions, updates, and removals in UpCloud are automatically reflected in Morpheus on the next sync cycle.
Virtual machines can be provisioned into UpCloud directly from Morpheus using standard instance types and layouts. Supported operations include:
- Create, start, stop, and delete servers
- Resize servers to a different UpCloud plan
- Attach and detach storage volumes (MaxIOPS, HDD, and Standard volume types)
- Use UpCloud public/user templates and uploaded SSH keys during provisioning
- Provision Linux, Windows, Docker host, and Kubernetes node server types
UpCloud server backups are supported via the Morpheus backup framework. Supported operations include:
- Execute backup jobs through Morpheus
- Restore backups to existing workloads
| Component | Minimum Version |
|---|---|
| Morpheus | 8.1.2 |
src/main/groovy- Source code for the pluginUpcloudPlugin.groovy- Plugin entry point; registers all providers and resolves API credentialsUpcloudCloudProvider.groovy- Defines the UpCloud cloud/zone type, network types, storage volume types, and compute server typesUpcloudProvisionProvider.groovy- Handles provisioning, resizing, starting/stopping, and removal of UpCloud serversUpcloudOptionSourceProvider.groovy- Supplies option lists (e.g. zones, plans) for Morpheus UI formsUpcloudBackupProvider.groovy,UpcloudBackupExecutionProvider.groovy,UpcloudBackupRestoreProvider.groovy,UpcloudBackupTypeProvider.groovy- Backup, backup execution, and restore support for UpCloud serversdatasets/- Dataset providers (UpcloudCloudRegionDatasetProvider,UpcloudImageDatasetProvider) used to populate region and image selection listsservices/UpcloudApiService.groovy- Wraps calls to the UpCloud REST API (zones, plans, templates, servers, storage)sync/- Synchronization tasks that keep Morpheus in sync with UpCloud (PlansSync,PublicTemplatesSync,UserImagesSync,VirtualMachinesSync)util/- Utility classes (UpcloudComputeUtility,UpcloudStatusUtility) used for API communication and server status handling
src/assets- Plugin assets, including the UpCloud logo (assets/upcloud.svg) used in the Morpheus UIbuild.gradleandgradle.properties- Build configuration and dependency/version properties for the plugin
Run the following command to compile and package the plugin jar:
./gradlew shadowJarThe plugin JAR will be written to build/libs/.
To execute tests, use the following command:
./gradlew testCopyright 2022 Morpheus Data, LLC. Licensed under the Apache License, Version 2.0.
- Download the latest
.jarfrom the Releases page, or build it yourself. - In Morpheus, navigate to Administration → Integrations → Plugins.
- Click Browse and upload the
.jarfile. - The UpCloud cloud type will appear after the plugin loads.
When adding an UpCloud cloud in Morpheus (Infrastructure → Clouds → Add Cloud), provide the following:
| Field | Description |
|---|---|
| Credentials | Select local credentials or a stored username/password credential |
| Username | UpCloud account username |
| Password | UpCloud account password |
| Zone | UpCloud zone/region to add to Morpheus |
| Inventory | Inventory level for discovering existing UpCloud servers |
Credentials can also be stored as a Morpheus Credential and selected at cloud setup time.
Once the cloud is added, Morpheus will trigger an initial sync of zones, plans, templates, images, and existing virtual machines. From there, instances can be provisioned into UpCloud using standard Morpheus instance types and layouts, and backups can be configured through the Morpheus backup framework.
The plugin communicates with the UpCloud REST API at https://api.upcloud.com (API version 1.3):
/zone(GET) - List available UpCloud zones/regions/plan(GET) - List available server plans/price(GET) - List pricing information for zones, plans, and resources/storage/template(GET) - List public and private (user) storage templates/images/storage(POST) - Create a new storage volume/storage/{storageId}(GET, PUT, DELETE) - Retrieve, resize, or delete a specific storage volume/storage/{storageId}/backup(POST) - Create a snapshot/backup of a storage volume/storage/{storageId}/restore(POST) - Restore a storage volume from a snapshot/backup/server(GET, POST) - List servers and create a new server/server/{serverId}(GET, PUT, DELETE) - Retrieve, resize/modify, or delete a specific server/server/{serverId}/start(POST) - Start a server/server/{serverId}/stop(POST) - Stop or power off a server/server/{serverId}/storage/attach(POST) - Attach a storage volume to a server/server/{serverId}/storage/detach(POST) - Detach a storage volume from a server