Skip to content

upcoming: [UIE-9512, UIE-9530] - New Rule Set Details Drawer with Marked for Deletion status#13108

Merged
pmakode-akamai merged 103 commits intolinode:developfrom
pmakode-akamai:UIE-9512-9530-new-ruleset-details-drawer-with-marked-for-deletion
Nov 25, 2025
Merged

upcoming: [UIE-9512, UIE-9530] - New Rule Set Details Drawer with Marked for Deletion status#13108
pmakode-akamai merged 103 commits intolinode:developfrom
pmakode-akamai:UIE-9512-9530-new-ruleset-details-drawer-with-marked-for-deletion

Conversation

@pmakode-akamai
Copy link
Copy Markdown
Contributor

@pmakode-akamai pmakode-akamai commented Nov 19, 2025

Description 📝

  • Make the Ruleset label in the Firewall Rules table clickable. Clicking it should open a Ruleset details drawer showing its associated information, including the list of Prefixlists (if available or referenced) [NOTE: Prefix Lists are not implemented in this PR].
  • When a ruleset deletion is initiated at the system level from the backend, the corresponding ruleset row in the Firewall Rules table should be marked as "⚠️ Marked for deletion" until all references of that ruleset to the firewall are removed. The Rule Set will be automatically removed once all of its references are deleted.

Changes 🔄

  • Added a new Rule Set Details drawer.
  • When a Rule Set is deleted but still has references to the firewall, opening the Rule Set drawer will display a ⚠️ Marked for deletion status.
  • Add some unit tests

Scope 🚢

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

Target release date 🗓️

N/A

Preview 📷

Description Preview
Rule Set Details Drawer (eg., Mocked firewall-ruleset-1) Screenshot 2025-11-20 at 11 22 42 PM
Rule Set Details Drawer with Marked for Deletion status & Tooltip message (eg., Mocked ruleset-with-a-longer-32ch-label) Screenshot 2025-11-20 at 11 32 22 PM Screenshot 2025-11-20 at 11 42 37 PM
loading invalid ruleset details drawer with invalid ruleset id Screenshot 2025-11-24 at 11 19 33 PM

How to test 🧪

Prerequisites

  • Enable firewallRulesetsPrefixlists feature flag
  • Enable MSW (with Legacy MSW Handlers)

Verification steps

  • Navigate to the Firewalls Landing page and locate the "firewall with rule and ruleset reference" instance. Go to its details page
  • Refer to the preview screenshots above and verify the Ruleset Details page by clicking the ruleset label for both a normal ruleset and a ruleset marked with "⚠️ Marked for deletion" status
  • Ensure there are no regressions
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

…layout' into UIE-9514-update-firewall-rule-drawer-to-support-referencing-ruleset
@pmakode-akamai pmakode-akamai marked this pull request as ready for review November 21, 2025 17:34
@pmakode-akamai pmakode-akamai requested a review from a team as a code owner November 21, 2025 17:34
Copy link
Copy Markdown
Contributor

@harsh-akamai harsh-akamai left a comment

Choose a reason for hiding this comment

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

PR looks good 👍

Copy link
Copy Markdown
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.

Code looks good!

Only concerns are

  • possible unnecessary one-off styling
  • untraditional button variant for a "Close" button

Comment on lines +156 to +161
<ActionsPanel
primaryButtonProps={{
label: 'Cancel',
onClick: closeDrawer,
}}
/>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

UX observation: It seems very untraditional to use a Primary button for a Cancel/Close button.

Everywhere else in Cloud Manager will use a secondary button if the action is Close/Cancel

Image

Copy link
Copy Markdown
Contributor Author

@pmakode-akamai pmakode-akamai Nov 25, 2025

Choose a reason for hiding this comment

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

Yes, we can do that for consistency. I'll check and confirm with UX cc @tzmiivsk-akamai

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Agreed, let's keep Cancel button as secondary for consistency. I'll update the mockups

Comment on lines +144 to +147
<StyledChip
action={rule.action}
label={capitalize(rule.action?.toLowerCase() ?? '')}
/>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The UX mockups may not agree, but I think it would be much better to just use our Chip "out-of-the-box" rather than making a custom styled component.

I don't think a custom styled Chip is worth the maintenance burden and the possible deviation from other Chips throughout Cloud Manager.

Suggested change
<StyledChip
action={rule.action}
label={capitalize(rule.action?.toLowerCase() ?? '')}
/>
<Chip
color={rule.action === 'ACCEPT' ? 'success' : 'error'}
label={capitalize(rule.action?.toLowerCase() ?? '')}
/>
This PR Suggestion (Use "out of the box" Chip)
Light Mode Image Image
Dark Mode Image Image

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I'll check with UX regarding this as well. But I'm merging this as is since it blocking other PRs

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The thing is that the current “out-of-the-box” badge styles are expected to be aligned with the ADS styles soon, meaning they will eventually migrate to ADS. In the mockups, I’m already using the ADS badge component styles.
If needed - and if it significantly simplifies the implementation - I’m okay with reusing the current CM component and its colors. But if it doesn’t affect development much, then let’s proceed with the ADS badges.

@github-project-automation github-project-automation bot moved this from Review to Approved in Cloud Manager Nov 24, 2025
@linode-gh-bot
Copy link
Copy Markdown
Collaborator

Cloud Manager UI test results

🔺 1 failing test on test run #26 ↗︎

❌ Failing✅ Passing↪️ Skipped🕐 Duration
1 Failing861 Passing11 Skipped41m 1s

Details

Failing Tests
SpecTest
firewall-landing-page.spec.tsCloud Manager Cypress Tests→confirms Firewalls landing page empty state is shown when no Firewalls exist » lists all Firewalls

Troubleshooting

Use this command to re-run the failing tests:

pnpm cy:run -s "cypress/e2e/core/firewalls/firewall-landing-page.spec.ts"

@pmakode-akamai
Copy link
Copy Markdown
Contributor Author

Merging - verified that the test failure is unrelated to this PR

@pmakode-akamai pmakode-akamai added Approved Multiple approvals and ready to merge! and removed Ready for Review labels Nov 25, 2025
@pmakode-akamai pmakode-akamai merged commit 3660a04 into linode:develop Nov 25, 2025
34 of 35 checks passed
@github-project-automation github-project-automation bot moved this from Approved to Merged in Cloud Manager Nov 25, 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! Firewalls Related to Firewalls

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

6 participants