feat: add createGPUDroplet, getGPUDroplet, updateGPUDroplet and deleteGPUDroplet components#3746
feat: add createGPUDroplet, getGPUDroplet, updateGPUDroplet and deleteGPUDroplet components#3746felixgateru wants to merge 8 commits intosuperplanehq:mainfrom
Conversation
|
👋 Commands for maintainers:
|
9b037dc to
1945916
Compare
2b525e8 to
2a96f65
Compare
ef5f019 to
cb8f5fd
Compare
Signed-off-by: Felix Gateru <felix.gateru@gmail.com>
Signed-off-by: Felix Gateru <felix.gateru@gmail.com>
Signed-off-by: Felix Gateru <felix.gateru@gmail.com>
Signed-off-by: Felix Gateru <felix.gateru@gmail.com>
Signed-off-by: Felix Gateru <felix.gateru@gmail.com>
Signed-off-by: Felix Gateru <felix.gateru@gmail.com>
cb8f5fd to
4c64fde
Compare
Signed-off-by: Felix Gateru <felix.gateru@gmail.com>
| eventId: rootEvent.id ?? "", | ||
| }, | ||
| ]; | ||
| } |
There was a problem hiding this comment.
New shared utility duplicates existing local functions
Low Severity
The new baseEventSections in utils.ts duplicates an identical function already defined locally in ~15 existing mapper files (e.g., create_droplet.ts, get_droplet.ts, delete_droplet.ts, assign_reserved_ip.ts, copy_object.ts, etc.). The new GPU mappers import from utils.ts, but all existing mappers still use their own private copies. Introducing a shared version without migrating existing callers means the duplication actually increases — the codebase now has N+1 copies instead of N.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
| const rootTriggerNode = nodes.find((n) => n.id === rootEvent.nodeId); | ||
| if (!rootTriggerNode?.componentName) { | ||
| return []; | ||
| } |
There was a problem hiding this comment.
Missing fallback in shared baseEventSections causes empty event sections
Low Severity
The new shared baseEventSections in utils.ts returns an empty array when rootTriggerNode?.componentName is falsy. The established pattern in other mappers (e.g., create_alert_policy.ts) falls back to componentName via rootTriggerNode?.componentName ?? componentName, ensuring event sections are still rendered. This means GPU droplet components will silently show no event sections in edge cases where other components would still display them.


Implements: #3484
What changed:
Added four new DigitalOcean GPU droplet management components: Create GPU Droplet, Get GPU Droplet, Update GPU Droplet, and Delete GPU Droplet.
Why:
Enable users to provision and manage GPU-powered DigitalOcean droplets.
How:
Backend:
pkg/integrations/digitalocean/client.gowith GPU-specific methodslist_resources.goto handle new GPU resource typesFrontend:
web_src/src/pages/workflowv2/mappers/digitalocean/index.tsDemo
https://youtu.be/X-xxFkwiV1w