Skip to content

Conversation

@jaalah-akamai
Copy link
Contributor

Re-opening: #13084

Description 📝

This PR enhances linode_migrate event messages to display maintenance type (emergency/scheduled) and config information when available. Previously, migration events only showed "Linode linode-1 is being migrated" without context about the maintenance type or which config was being used.

Changes 🔄

The changes ensure that:

  • Event messages clearly indicate whether a migration is for emergency or scheduled maintenance
  • Config information is displayed when a secondary_entity is present in the event
  • Messages gracefully handle missing description fields by defaulting to "maintenance"
  • All event statuses (failed, finished, scheduled, started) consistently include this information
  • Upcoming Table: The start date column now uses the when field as opposed to the start_time which are essentially the same.

Additionally, this PR includes bug fixes for null handling in maintenance-related components and improvements to dev tools for testing these scenarios.

Scope 🚢

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

  • All customers
  • Some customers (e.g. in Beta or Limited Availability)
  • No customers / Not applicable

Target release date 🗓️

December 2nd

Preview 📷

Before:

  • "Linode linode-1 is being migrated."

After:

  • "Linode linode-1 is being migrated for emergency maintenance."
  • "Linode linode-1 is being migrated for emergency maintenance with config My Debian 11 Disk."
  • "Linode linode-1 is being migrated for scheduled maintenance."
Before After
Linode linode-1 is being migrated. Screenshot 2025-11-12 at 12 14 40 PM Linode linode-1 is being migrated for emergency maintenance with config My Debian 11 Disk. Screenshot 2025-11-12 at 12 13 17 PM
Screenshot 2025-11-12 at 12 14 49 PM Screenshot 2025-11-12 at 12 13 09 PM
recording.mov

How to test 🧪

Prerequisites

  • Enable the vmHostMaintenance feature flag
  • Have access to dev tools for mocking events and maintenance records
  • "Enable MSW" with Base Preset "Static Mocking"
  • Presets > Enable Events: Custom Events
  • Presets > Enable Events: Custom Events

Reproduction steps

  1. Navigate to Account > Maintenance page
  2. Ensure there are maintenance records with status "in_progress" or "started"
  3. Create matching events using dev tools with:
    • Select any/all "Linode Migration" from templates
    • For maintenance presets, you can do the same "In Progress - Emergency or Scheduled Migration"

Verification steps

  • Verify event messages display "for emergency maintenance" when description: 'emergency'
  • Verify event messages display "for scheduled maintenance" when description: 'scheduled'
  • Verify event messages display "for maintenance" when description is missing or null
  • Verify config information appears when secondary_entity is present: "with config [config name]"
  • Verify config information does not appear when secondary_entity is null
  • Verify all event statuses (failed, finished, scheduled, started) display correctly
  • Verify maintenance type is displayed in bold text
  • Test clearing secondary_entity field in dev tools and verify it saves as null
  • Verify no runtime errors occur when reason field is null in maintenance records
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
➕ Adding a changeset
🧪 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 ✅

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

@linode-gh-bot
Copy link
Collaborator

Cloud Manager UI test results

🔺 7 failing tests on test run #2 ↗︎

❌ Failing✅ Passing↪️ Skipped🕐 Duration
7 Failing824 Passing11 Skipped46m 13s

Details

Failing Tests
SpecTest
create-linode-blackwell.spec.tsCloud Manager Cypress Tests→smoketest for Nvidia blackwell GPUs in linodes/create page » disables Blackwells if disabled region selected
create-linode-blackwell.spec.tsCloud Manager Cypress Tests→smoketest for Nvidia blackwell GPUs in linodes/create page » enables Blackwells if enabled region selected
create-linode.spec.tsCloud Manager Cypress Tests→Create Linode→End-to-end→By plan type » creates a Premium CPU Linode
search-images.spec.tsCloud Manager Cypress Tests→Search Images » creates two images and make sure they show up in the table and are searchable
lke-create.spec.tsCloud Manager Cypress Tests→smoketest for Nvidia Blackwell GPUs in kubernetes/create page→standard tier » enabled feature flag includes blackwells
plan-selection.spec.tsCloud Manager Cypress Tests→displays specific linode plans for GPU » Should render divided tables when GPU divider enabled
plan-selection.spec.tsCloud Manager Cypress Tests→displays specific kubernetes plans for GPU » Should render divided tables when GPU divider enabled

Troubleshooting

Use this command to re-run the failing tests:

pnpm cy:run -s "cypress/e2e/core/linodes/create-linode-blackwell.spec.ts,cypress/e2e/core/linodes/create-linode.spec.ts,cypress/e2e/core/images/search-images.spec.ts,cypress/e2e/core/kubernetes/lke-create.spec.ts,cypress/e2e/core/linodes/plan-selection.spec.ts"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Review

Development

Successfully merging this pull request may close these issues.

4 participants