Skip to content

fix: [UIE-9731] - IAM Permissions performance improvements: Create from Backup & Clone#13143

Merged
abailly-akamai merged 7 commits intolinode:developfrom
abailly-akamai:UIE-9731
Dec 3, 2025
Merged

fix: [UIE-9731] - IAM Permissions performance improvements: Create from Backup & Clone#13143
abailly-akamai merged 7 commits intolinode:developfrom
abailly-akamai:UIE-9731

Conversation

@abailly-akamai
Copy link
Contributor

@abailly-akamai abailly-akamai commented Nov 28, 2025

Description 📝

This PR prevents fetching permissions for every linode when cloning or creating from a backup. It does so by utilizing the new /entities/<entity_type>?permission=<permission> endpoint.

Changes 🔄

  • Fetch available entities with new endpoint and remove fetching logic from the <LinodeSelectTableRow /> component
  • Map response and send result to <LinodeSelectTableRow />
  • Update test

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

Preview 📷

Before After
Screenshot 2025-12-02 at 10 13 21 Screenshot 2025-12-02 at 10 12 52
Screenshot 2025-12-02 at 10 13 44 Screenshot 2025-12-02 at 10 14 13

How to test 🧪

👉 Use a restricted DevCloud IAM account with large data sets (many linodes) - user should be given a linode_contributor(or similar) role to a majority of them

Reproduction steps

  • Navigate to /linodes/create/backups or /linodes/create/clone
  • 🚫 notice the a permission request for every instance

Verification steps

  • Navigate to /linodes/create/backups or /linodes/create/clone
  • ✅ notice only one permission request to entities
  • ✅ confirm no regression with permission checks
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

@abailly-akamai abailly-akamai changed the title [UIE-9731] fix: [UIE-9731] - Permissions performance improvements: Create from Backup & Clone Dec 1, 2025
@abailly-akamai abailly-akamai changed the title fix: [UIE-9731] - Permissions performance improvements: Create from Backup & Clone fix: [UIE-9731] - IAM Permissions performance improvements: Create from Backup & Clone Dec 1, 2025
/>
))}
{!isLoading &&
!error &&
Copy link
Contributor

Choose a reason for hiding this comment

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

why do we need to check if it's not an error or loading state here if we did it above?

Copy link
Contributor Author

@abailly-akamai abailly-akamai Dec 3, 2025

Choose a reason for hiding this comment

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

Yes - we're not blocking the rendering of the table with those checks as we do in other components. Basically we could have loading state + an empty table here without proper checks

@linode-gh-bot
Copy link
Collaborator

Cloud Manager UI test results

🔺 25 failing tests on test run #6 ↗︎

❌ Failing✅ Passing↪️ Skipped🕐 Duration
25 Failing837 Passing11 Skipped100m 16s

Details

Failing Tests
SpecTest
smoke-create-image.spec.tsCloud Manager Cypress Tests→create image (using mocks) » create image from a linode
delete-volume.spec.tsCloud Manager Cypress Tests→volume delete flow » deletes a volume
linode-config.spec.tsCloud Manager Cypress Tests→Linode Config management→End-to-End » Clones a config
machine-image-upload.spec.tsCloud Manager Cypress Tests→machine image » uploads machine image, mock upload canceled failed event
machine-image-upload.spec.tsCloud Manager Cypress Tests→machine image » uploads machine image, mock failed to decompress failed event
machine-image-upload.spec.tsCloud Manager Cypress Tests→machine image » uploads machine image, mock expired upload event
migrate-linode-with-firewall.spec.tsCloud Manager Cypress Tests→Migrate Linode With Firewall » migrates linode with firewall - real data
upgrade-volume.spec.tsCloud Manager Cypress Tests→volume upgrade/migration » can upgrade an unattached volume to NVMe
upgrade-volume.spec.tsCloud Manager Cypress Tests→volume upgrade/migration » can upgrade an attached volume from the volumes landing page
upgrade-volume.spec.tsCloud Manager Cypress Tests→volume upgrade/migration » can upgrade an attached volume from the linode details page
create-database.spec.tsCloud Manager Cypress Tests→create a database cluster, mocked data » creates a g6-nanode-1 MySQL v8.x 1-node cluster
create-database.spec.tsCloud Manager Cypress Tests→create a database cluster, mocked data » creates a g6-dedicated-2 MySQL v8.x 2-node cluster
create-database.spec.tsCloud Manager Cypress Tests→create a database cluster, mocked data » creates a g6-dedicated-2 MySQL v5.x 3-node cluster
create-database.spec.tsCloud Manager Cypress Tests→create a database cluster, mocked data » creates a g6-nanode-1 PostgreSQL v13.x 3-node cluster
create-database.spec.tsCloud Manager Cypress Tests→create a database cluster, mocked data » creates a g7-premium-2 MySQL v8.x 1-node cluster
create-database.spec.tsCloud Manager Cypress Tests→create a database cluster, mocked data » creates a g7-premium-4 MySQL v8.x 2-node cluster
create-database.spec.tsCloud Manager Cypress Tests→create a database cluster, mocked data » creates a g7-premium-2 MySQL v8.x 3-node cluster
resize-linode.spec.tsCloud Manager Cypress Tests→resize linode » resizes a linode by increasing size: cold migration
resize-linode.spec.tsCloud Manager Cypress Tests→resize linode » resizes a linode by decreasing size
access-key.e2e.spec.tsCloud Manager Cypress Tests→object storage access key end-to-end tests » can create an access key with limited access - e2e
linode-storage.spec.tsCloud Manager Cypress Tests→linode storage tab » deletes a disk when Linode Disk Encryption is enabled
linode-storage.spec.tsCloud Manager Cypress Tests→linode storage tab » deletes a disk
linode-storage.spec.tsCloud Manager Cypress Tests→linode storage tab » add a disk
linode-storage.spec.tsCloud Manager Cypress Tests→linode storage tab » resize disk
attach-volume.spec.tsCloud Manager Cypress Tests→volume attach and detach flows » attaches a volume to a Linode

Troubleshooting

Use this command to re-run the failing tests:

pnpm cy:run -s "cypress/e2e/core/images/smoke-create-image.spec.ts,cypress/e2e/core/volumes/delete-volume.spec.ts,cypress/e2e/core/linodes/linode-config.spec.ts,cypress/e2e/core/images/machine-image-upload.spec.ts,cypress/e2e/core/firewalls/migrate-linode-with-firewall.spec.ts,cypress/e2e/core/volumes/upgrade-volume.spec.ts,cypress/e2e/core/databases/create-database.spec.ts,cypress/e2e/core/linodes/resize-linode.spec.ts,cypress/e2e/core/objectStorage/access-key.e2e.spec.ts,cypress/e2e/core/linodes/linode-storage.spec.ts,cypress/e2e/core/volumes/attach-volume.spec.ts"

@github-project-automation github-project-automation bot moved this from Review to Approved in Cloud Manager Dec 3, 2025
@abailly-akamai abailly-akamai merged commit 6d8b9c4 into linode:develop Dec 3, 2025
34 of 35 checks passed
@github-project-automation github-project-automation bot moved this from Approved to Merged in Cloud Manager Dec 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

4 participants