Skip to content

Conversation

@dchyrva-akamai
Copy link
Contributor

Description 📝

Global quota usage table created.

Changes 🔄

  • Created new "Global Quota" tanstack queries.
  • Created new useGetObjGlobalQuotasWithUsage hook.
  • Created new GlobalQuotasTable component.

Preview 📷

image

How to test 🧪

  • Use the following branch for the apinext: dchyrva:feature/STORIF-185.
  • Run docker-compose up -d apinext.
  • Update .env file of the Cloud Manager to use local API instance.
  • Run pnpm dev
  • Open browser and navigate to /quotas page.
  • Observe new "Object Storage: global" quotas table.

Related PRs

apinext

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

@dchyrva-akamai dchyrva-akamai force-pushed the feature/STORIF-187 branch 3 times, most recently from e492df1 to 1c7f2aa Compare December 12, 2025 12:08
@dchyrva-akamai dchyrva-akamai marked this pull request as ready for review December 12, 2025 12:10
@dchyrva-akamai dchyrva-akamai requested a review from a team as a code owner December 12, 2025 12:10
@dchyrva-akamai dchyrva-akamai force-pushed the feature/STORIF-187 branch 3 times, most recently from 6c6c081 to 154edf3 Compare December 15, 2025 10:36
@dchyrva-akamai dchyrva-akamai requested a review from a team as a code owner December 15, 2025 10:36
@dchyrva-akamai dchyrva-akamai requested review from cliu-akamai and removed request for a team December 15, 2025 10:36
@dchyrva-akamai dchyrva-akamai force-pushed the feature/STORIF-187 branch 2 times, most recently from 6d4cd7e to dbcea0e Compare December 15, 2025 15:42
@dchyrva-akamai dchyrva-akamai force-pushed the feature/STORIF-187 branch 4 times, most recently from 67ab331 to ff1f699 Compare December 19, 2025 09:06
@github-actions
Copy link

github-actions bot commented Jan 4, 2026

This PR is stale because it has been open 15 days with no activity. Please attend to this PR or it will be closed in 5 days

globalQuota: GlobalQuotaWithUsage;
}

const quotaRowMinHeight = 58;
Copy link
Contributor

Choose a reason for hiding this comment

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

move this to a constant file as QUOTA_ROW_MIN_HEIGHT since reused in multiple components

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good idea, updated the code.

setMethod('GET'),
setXFilter(filter),
setParams(params),
);
Copy link
Contributor

Choose a reason for hiding this comment

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

Do you need a "get all" method as well? Could we have more than 500 records?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Currently there is only one object in the list and I think there won't be more than 25 global quotas at all.
We ain't gonna need it =)

const globalQuotaIds =
globalQuotas?.data.map((quota) => quota.quota_id) ?? [];
const globalQuotaUsageQueries = useQueries({
queries: globalQuotaIds.map((quotaId) =>
Copy link
Contributor

Choose a reason for hiding this comment

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

How many quota IDs could you end up having to fetch in parallel? Asking because this could end up being a bad performance bottleneck if running queries for dozens (hundreds) of IDs.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The decision to fetch quota usage like this was made by the Architect, currently there is only one global quota in the object-storage, and I don't think there will ever be more than 25.

@github-actions github-actions bot removed the Stale label Jan 6, 2026
@dchyrva-akamai dchyrva-akamai force-pushed the feature/STORIF-187 branch 3 times, most recently from a2e5712 to 5e50de3 Compare January 8, 2026 10:13
@linode-gh-bot
Copy link
Collaborator

Cloud Manager UI test results

🔺 1 failing test on test run #18 ↗︎

❌ Failing✅ Passing↪️ Skipped🕐 Duration
1 Failing854 Passing11 Skipped42m 12s

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"

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.

3 participants