Skip to content

Conversation

@n0vabyte
Copy link
Contributor

@n0vabyte n0vabyte commented Aug 6, 2025

Description 📝

Updates how UDF data cluster_size works in stackscripts. The goal of this PR is to introduce multi-cluster instance types for the Marketplace apps. Most importantly, reflect the correct price for the cluster being created. This PR allows us to match $prefix_cluster_size with $prefix_cluster_type to create a dynamic cluster in a cluster deployment. For example, ELK can have multi-node cluster with different instance types associated with it.

Changes 🔄

  • packages/manager/src/features/Linodes/LinodeCreate/Summary/utilities.ts updated to parse cluster data associated with the instance type being created.
  • Summary.tsx is updated to reflect that if a cluster is being created with a heterogeneous mix of instance is doesn't display the Linode type. This cleaner to display that a "cluster_name of $n nodes" is being created.
  • packages/manager/src/features/Linodes/LinodeCreate/utilities.ts is updated to map the instance Label that the customer is created to a valid instance type. I am using types.json.

Scope 🚢

Upon production release, changes in this PR will be visible to:

  • All customers using Stackscript. Customer will be able to use $prefix_cluster_size, $prefix_cluster_type and cluster_name in their stackscripts to extend functionality.

Target release date 🗓️

Next release cycle if possible. No rush on making the changes GA.

Preview 📷

Before After
before1 after1
before2 after2

How to test 🧪

Step 1: Create a new Stackscript

  1. One your Cloud Manager account, click the Stackscripts tab on the left-hand side.
  2. Click on the button 'Create Stackscript' on the upper right-hand side
  3. Fill out the StackScript Label, Description and Target Images.
  4. Past the following in the Script code box:
#!/bin/bash
# ELK PoC

# Cluster Name
#<UDF name="cluster_name" label="Cluster Name">

# This instance (provisioner):
#<UDF name="cluster_size" label="Kinaba Size" oneOf="1,2" default="1">

# Cluster size ($prefix_cluster_size):
#<UDF name="elastic_cluster_size" label="Elasticsearch Cluster Size" oneOf="2,3" default="2">
#<UDF name="logstash_cluster_size" label="Logstash Cluster Size" oneOf="2,4" default="2">

# Instance types($prefix_cluster_type):
#<UDF name="elastic_cluster_type" label="Elasticsearch Instance Type" oneOf="Dedicated 4GB,Dedicated 8GB,Dedicated 16GB,Dedicated 32GB,Dedicated 64GB" default="Dedicated 4GB">
#<UDF name="logstash_cluster_type" label="Logstash Instance Type" oneOf="Dedicated 4GB,Dedicated 8GB,Dedicated 16GB,Dedicated 32GB,Dedicated 64GB" default="Dedicated 4GB">
  1. Click on the Create StackScript button.

Step 2: Deploy StackScript

  1. From the StackScripts section, select the StackScript that you just created.
  2. Click on the Deploy New Linode button on the upper right-hand side
  3. Select the cluster sizes and Linode plans that you like
  4. Scroll to the bottom of the page to see Summary

From here you will be able to select different cluster size for Kibana, Elasticsearch and Logstash. The Linode plan that is selected for Elasticsearch and Logstash is appropriately added to the total at the bottom of the Summary.

Author Checklists

As an Author, to speed up the review process, I considered 🤔

👀 Doing a self review
❔ Our contribution guidelines
🤏 Splitting feature into small PRs
🧪 Providing/improving test coverage
🔐 Removing all sensitive information from the code and PR description
🚩 Using a feature flag to protect the release
👣 Providing comprehensive reproduction steps
📑 Providing or updating our documentation
🕛 Scheduling a pair reviewing session
📱 Providing mobile support
♿ Providing accessibility support


  • I have read and considered all applicable items listed above.

As an Author, before moving this PR from Draft to Open, I confirmed ✅

  • [x ] All tests and CI checks are passing
  • TypeScript compilation succeeded without errors
  • Code passes all linting rules

@n0vabyte n0vabyte requested a review from a team as a code owner August 6, 2025 15:57
@n0vabyte n0vabyte requested review from dwiley-akamai and pmakode-akamai and removed request for a team August 6, 2025 15:57
@n0vabyte n0vabyte changed the title Feature/marketplace clusters feat: Allow multi-cluster Marketplace deployments Aug 6, 2025
Copy link
Contributor

@dwiley-akamai dwiley-akamai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @n0vabyte, thank you for opening this PR. Where are these changes coming from–a JIRA ticket that outlines the requirements for this work, an independent idea you had and implemented, etc.?

@bnussman-akamai bnussman-akamai self-requested a review August 7, 2025 13:06
@jcallahan-akamai jcallahan-akamai removed the request for review from pmakode-akamai August 18, 2025 19:20
@n0vabyte
Copy link
Contributor Author

@bnussman-akamai any updates?

@bnussman-akamai
Copy link
Member

Will be reviewing today

Copy link
Member

@bnussman-akamai bnussman-akamai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall functionality is looking solid! I just think we need to tidy up some things

@github-project-automation github-project-automation bot moved this from Review to Changes Requested in Cloud Manager Sep 5, 2025
@bnussman-akamai bnussman-akamai self-requested a review September 19, 2025 13:56
@n0vabyte
Copy link
Contributor Author

Any updates?

@dwiley-akamai dwiley-akamai self-requested a review September 30, 2025 13:45
@bnussman-akamai
Copy link
Member

Hoping to rereview soon.

Do we have a testing plan for this?

I think it would ideal if we have some thing in place. Like unit tests, cypress e2e tests, or a QA team responsible for testing this

Copy link
Contributor

@dwiley-akamai dwiley-akamai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verification steps ✅

I agree that implementing some more robust unit and/or E2E tests or having a testing plan in place would be best

@bnussman-akamai
Copy link
Member

I'm going to push up one more small change, then I'll approve!

@linode-gh-bot
Copy link
Collaborator

Cloud Manager UI test results

🔺 1 failing test on test run #17 ↗︎

❌ Failing✅ Passing↪️ Skipped🕐 Duration
1 Failing812 Passing11 Skipped38m 27s

Details

Failing Tests
SpecTest
clone-linode.spec.tsCloud Manager Cypress Tests→clone linode » can clone a Linode from Linode details page

Troubleshooting

Use this command to re-run the failing tests:

pnpm cy:run -s "cypress/e2e/core/linodes/clone-linode.spec.ts"

Copy link
Member

@bnussman-akamai bnussman-akamai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! I pushed up some changes and unit tests so double check behind me

I think the clone-linode.spec.ts failure can be disregarded

@bnussman-akamai bnussman-akamai added the Add'tl Approval Needed Waiting on another approval! label Oct 6, 2025
@github-project-automation github-project-automation bot moved this from Changes Requested to Approved in Cloud Manager Oct 7, 2025
@bnussman-akamai bnussman-akamai added Approved Multiple approvals and ready to merge! and removed Add'tl Approval Needed Waiting on another approval! labels Oct 7, 2025
@bnussman-akamai bnussman-akamai merged commit b554d4b into linode:develop Oct 7, 2025
34 of 35 checks passed
@github-project-automation github-project-automation bot moved this from Approved to Merged in Cloud Manager Oct 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Approved Multiple approvals and ready to merge! Marketplace

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants